mirror of
https://github.com/wassname/talk.git
synced 2026-06-29 08:49:56 +08:00
99 lines
2.9 KiB
JavaScript
99 lines
2.9 KiB
JavaScript
const Action = require('../../models/action');
|
|
const expect = require('chai').expect;
|
|
|
|
describe('models.Action', () => {
|
|
let mockActions = [];
|
|
|
|
beforeEach(() => Action.create([{
|
|
action_type: 'flag',
|
|
item_id: '123',
|
|
item_type: 'comment',
|
|
user_id: 'flagginguserid'
|
|
}, {
|
|
action_type: 'flag',
|
|
item_id: '456',
|
|
item_type: 'comment'
|
|
}, {
|
|
action_type: 'flag',
|
|
item_id: '123',
|
|
item_type: 'comment'
|
|
}, {
|
|
action_type: 'like',
|
|
item_id: '123',
|
|
item_type: 'comment'
|
|
}]).then((actions) => {
|
|
mockActions = actions;
|
|
}));
|
|
|
|
describe('#findById()', () => {
|
|
it('should find an action by id', () => {
|
|
return Action.findById(mockActions[0].id).then((result) => {
|
|
expect(result).to.not.be.null;
|
|
expect(result).to.have.property('action_type', 'flag');
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('#findByItemIdArray()', () => {
|
|
it('should find an array of actions from an array of item_ids', () => {
|
|
return Action.findByItemIdArray(['123', '456']).then((result) => {
|
|
expect(result).to.have.length(4);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('#getActionSummaries()', () => {
|
|
it('should return properly formatted summaries from an array of item_ids', () => {
|
|
return Action.getActionSummaries(['123', '789']).then((summaries) => {
|
|
expect(summaries).to.have.length(2);
|
|
|
|
expect(summaries).to.deep.include({
|
|
action_type: 'like',
|
|
count: 1,
|
|
item_id: '123',
|
|
item_type: 'comment',
|
|
current_user: null
|
|
});
|
|
|
|
expect(summaries).to.deep.include({
|
|
action_type: 'flag',
|
|
count: 2,
|
|
item_id: '123',
|
|
item_type: 'comment',
|
|
current_user: null
|
|
});
|
|
});
|
|
});
|
|
|
|
it('should include a current user when one is passed', () => {
|
|
return Action
|
|
.getActionSummaries(['123'], 'flagginguserid')
|
|
.then((summaries) => {
|
|
expect(summaries).to.have.length(2);
|
|
|
|
let summary = summaries.find((s) => s.item_id === '123' && s.action_type === 'flag');
|
|
|
|
expect(summary).to.not.be.undefined;
|
|
expect(summary.current_user).to.not.be.null;
|
|
expect(summary.current_user).to.have.property('item_id', '123');
|
|
expect(summary.current_user).to.have.property('item_type', 'comment');
|
|
expect(summary.current_user).to.have.property('user_id', 'flagginguserid');
|
|
expect(summary.current_user).to.have.property('action_type', 'flag');
|
|
});
|
|
});
|
|
|
|
it('should not include a current user when one is passed for a user that doesn\'t have an action', () => {
|
|
return Action
|
|
.getActionSummaries(['123'], 'flagginguserid2')
|
|
.then((summaries) => {
|
|
expect(summaries).to.have.length(2);
|
|
|
|
summaries.forEach((summary) => {
|
|
expect(summary).to.not.be.undefined;
|
|
expect(summary).to.have.property('current_user', null);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|