diff --git a/src/api/friends/MessengerThreadChat.test.ts b/src/api/friends/MessengerThreadChat.test.ts new file mode 100644 index 0000000..53320c4 --- /dev/null +++ b/src/api/friends/MessengerThreadChat.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, it } from 'vitest'; +import { MessengerThreadChat } from './MessengerThreadChat'; + +describe('MessengerThreadChat.offlineDelivered', () => +{ + it('is true for a CHAT message with extraData "offline"', () => + { + const chat = new MessengerThreadChat(5, 'hello', 60, 'offline', MessengerThreadChat.CHAT); + expect(chat.offlineDelivered).toBe(true); + }); + + it('is false for a normal CHAT message with no extraData', () => + { + const chat = new MessengerThreadChat(5, 'hello', 0, null, MessengerThreadChat.CHAT); + expect(chat.offlineDelivered).toBe(false); + }); + + it('is false when extraData is some other value (e.g. group chat data)', () => + { + const chat = new MessengerThreadChat(5, 'hi', 0, 'Bob/figurestr/5', MessengerThreadChat.CHAT); + expect(chat.offlineDelivered).toBe(false); + }); + + it('is false for a non-CHAT type even if extraData is "offline"', () => + { + const chat = new MessengerThreadChat(5, 'hi', 0, 'offline', MessengerThreadChat.ROOM_INVITE); + expect(chat.offlineDelivered).toBe(false); + }); +}); diff --git a/src/api/friends/MessengerThreadChat.ts b/src/api/friends/MessengerThreadChat.ts index 5e37167..c58b366 100644 --- a/src/api/friends/MessengerThreadChat.ts +++ b/src/api/friends/MessengerThreadChat.ts @@ -74,6 +74,11 @@ export class MessengerThreadChat return this._extraData; } + public get offlineDelivered(): boolean + { + return (this._type === MessengerThreadChat.CHAT) && (this._extraData === 'offline'); + } + public get date(): Date { return this._date;