diff --git a/ts/test/session/sending/MessageQueue_test.ts b/ts/test/session/sending/MessageQueue_test.ts new file mode 100644 index 000000000..9b4ea03cc --- /dev/null +++ b/ts/test/session/sending/MessageQueue_test.ts @@ -0,0 +1,71 @@ +import { expect } from 'chai'; +import * as _ from 'lodash'; +import { MessageUtils } from '../../../session/utils'; +import { TestUtils } from '../../../test/test-utils'; +import { PendingMessageCache, MessageQueue } from '../../../session/sending/MessageQueue'; +import { generateFakePubkey, generateChatMessage } from '../../test-utils/testUtils'; + +// Equivalent to Data.StorageItem +interface StorageItem { + id: string; + value: any; +} + +describe('Message Queue', () => { + // Initialize new stubbed cache + let data: StorageItem; + let messageQueueStub: MessageQueue; + + beforeEach(async () => { + // Stub out methods which touch the database + const storageID = 'pendingMessages'; + data = { + id: storageID, + value: '[]', + }; + + TestUtils.stubData('getItemById') + .withArgs('pendingMessages') + .callsFake(async () => { + return data; + }); + + TestUtils.stubData('createOrUpdateItem').callsFake((item: StorageItem) => { + if (item.id === storageID) { + data = item; + } + }); + + messageQueueStub = new MessageQueue(); + }); + + afterEach(() => { + TestUtils.restoreStubs(); + }); + + it('can send to many devices', async () => { + const devices = Array.from({length: 40}, generateFakePubkey); + const message = generateChatMessage(); + + await messageQueueStub.sendMessageToDevices(devices, message); + + // Failure will make an error + }); + + it('can send using multidevice', async () => { + const device = generateFakePubkey(); + const message = generateChatMessage(); + + await messageQueueStub.sendUsingMultiDevice(device, message); + + }); + + it('', async () => { + + }); + + it("won't process invalid message", async () => { + // process with message undefined + }); + +}); diff --git a/ts/test/test-utils/testUtils.ts b/ts/test/test-utils/testUtils.ts index 4cfbc50ac..aba1f7568 100644 --- a/ts/test/test-utils/testUtils.ts +++ b/ts/test/test-utils/testUtils.ts @@ -6,7 +6,7 @@ import { v4 as uuid } from 'uuid'; import { ImportMock } from 'ts-mock-imports'; import { PubKey } from '../../../ts/session/types'; -import { ChatMessage } from '../../session/messages/outgoing'; +import { ChatMessage, OpenGroupMessage } from '../../session/messages/outgoing'; const sandbox = sinon.createSandbox(); @@ -67,3 +67,13 @@ export function generateChatMessage(): ChatMessage { preview: undefined, }); } + +export function generateOpenGroupMessage(): OpenGroupMessage { + const group = new OpenGroup() + + return new OpenGroupMessage({ + group + attachments: undefined, + }); +} +