mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-02 03:57:52 +00:00
127 lines
3.7 KiB
JavaScript
127 lines
3.7 KiB
JavaScript
import conversationMixin, {
|
|
filterDuplicateSourceMessages,
|
|
} from '../conversations';
|
|
import conversationFixture from './conversationFixtures';
|
|
import commonHelpers from '../../helper/commons';
|
|
commonHelpers();
|
|
|
|
describe('#filterDuplicateSourceMessages', () => {
|
|
it('returns messages without duplicate source_id and all messages without source_id', () => {
|
|
expect(
|
|
filterDuplicateSourceMessages([
|
|
{ source_id: null, id: 1 },
|
|
{ source_id: '', id: 2 },
|
|
{ id: 3 },
|
|
{ source_id: 'wa_1', id: 4 },
|
|
{ source_id: 'wa_1', id: 5 },
|
|
{ source_id: 'wa_1', id: 6 },
|
|
{ source_id: 'wa_2', id: 7 },
|
|
{ source_id: 'wa_2', id: 8 },
|
|
{ source_id: 'wa_3', id: 9 },
|
|
])
|
|
).toEqual([
|
|
{ source_id: null, id: 1 },
|
|
{ source_id: '', id: 2 },
|
|
{ id: 3 },
|
|
{ source_id: 'wa_1', id: 4 },
|
|
{ source_id: 'wa_2', id: 7 },
|
|
{ source_id: 'wa_3', id: 9 },
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe('#conversationMixin', () => {
|
|
it('should return read messages if conversation is passed', () => {
|
|
expect(
|
|
conversationMixin.methods.readMessages(
|
|
conversationFixture.conversation.messages,
|
|
conversationFixture.conversation.agent_last_seen_at
|
|
)
|
|
).toEqual(conversationFixture.readMessages);
|
|
});
|
|
it('should return read messages if conversation is passed', () => {
|
|
expect(
|
|
conversationMixin.methods.unReadMessages(
|
|
conversationFixture.conversation.messages,
|
|
conversationFixture.conversation.agent_last_seen_at
|
|
)
|
|
).toEqual(conversationFixture.unReadMessages);
|
|
});
|
|
|
|
describe('#lastMessage', () => {
|
|
it("should return last activity message if both api and store doesn't have other messages", () => {
|
|
const conversation = {
|
|
messages: [
|
|
{ id: 1, created_at: 1654333, message_type: 2, content: 'Hey' },
|
|
],
|
|
last_non_activity_message: null,
|
|
};
|
|
const { messages } = conversation;
|
|
expect(conversationMixin.methods.lastMessage(conversation)).toEqual(
|
|
messages[messages.length - 1]
|
|
);
|
|
});
|
|
|
|
it('should return message from store if store has latest message', () => {
|
|
const conversation = {
|
|
messages: [],
|
|
last_non_activity_message: {
|
|
id: 2,
|
|
created_at: 1654334,
|
|
message_type: 2,
|
|
content: 'Hey',
|
|
},
|
|
};
|
|
expect(conversationMixin.methods.lastMessage(conversation)).toEqual(
|
|
conversation.last_non_activity_message
|
|
);
|
|
});
|
|
|
|
it('should return last non activity message from store if api value is empty', () => {
|
|
const conversation = {
|
|
messages: [
|
|
{
|
|
id: 1,
|
|
created_at: 1654333,
|
|
message_type: 1,
|
|
content: 'Outgoing Message',
|
|
},
|
|
{ id: 2, created_at: 1654334, message_type: 2, content: 'Hey' },
|
|
],
|
|
last_non_activity_message: null,
|
|
};
|
|
expect(conversationMixin.methods.lastMessage(conversation)).toEqual(
|
|
conversation.messages[0]
|
|
);
|
|
});
|
|
|
|
it("should return last non activity message from store if store doesn't have any messages", () => {
|
|
const conversation = {
|
|
messages: [
|
|
{
|
|
id: 1,
|
|
created_at: 1654333,
|
|
message_type: 1,
|
|
content: 'Outgoing Message',
|
|
},
|
|
{
|
|
id: 3,
|
|
created_at: 1654335,
|
|
message_type: 0,
|
|
content: 'Incoming Message',
|
|
},
|
|
],
|
|
last_non_activity_message: {
|
|
id: 2,
|
|
created_at: 1654334,
|
|
message_type: 2,
|
|
content: 'Hey',
|
|
},
|
|
};
|
|
expect(conversationMixin.methods.lastMessage(conversation)).toEqual(
|
|
conversation.messages[1]
|
|
);
|
|
});
|
|
});
|
|
});
|