57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import { assert } from 'chai';
|
||
|
import { MessageModel } from '../../models/messages';
|
||
|
|
||
|
import { MessageController } from '../../util/MessageController';
|
||
|
|
||
|
describe('MessageController', () => {
|
||
|
describe('filterBySentAt', () => {
|
||
|
it('returns an empty iterable if no messages match', () => {
|
||
|
const mc = new MessageController();
|
||
|
|
||
|
assert.isEmpty([...mc.filterBySentAt(123)]);
|
||
|
});
|
||
|
|
||
|
it('returns all messages that match the timestamp', () => {
|
||
|
const mc = new MessageController();
|
||
|
const message1 = new MessageModel({
|
||
|
conversationId: 'xyz',
|
||
|
id: 'abc',
|
||
|
received_at: 1,
|
||
|
sent_at: 1234,
|
||
|
timestamp: 9999,
|
||
|
type: 'incoming',
|
||
|
});
|
||
|
const message2 = new MessageModel({
|
||
|
conversationId: 'xyz',
|
||
|
id: 'def',
|
||
|
received_at: 2,
|
||
|
sent_at: 1234,
|
||
|
timestamp: 9999,
|
||
|
type: 'outgoing',
|
||
|
});
|
||
|
const message3 = new MessageModel({
|
||
|
conversationId: 'xyz',
|
||
|
id: 'ignored',
|
||
|
received_at: 3,
|
||
|
sent_at: 5678,
|
||
|
timestamp: 9999,
|
||
|
type: 'outgoing',
|
||
|
});
|
||
|
mc.register(message1.id, message1);
|
||
|
mc.register(message2.id, message2);
|
||
|
// We deliberately register this message twice for testing.
|
||
|
mc.register(message2.id, message2);
|
||
|
mc.register(message3.id, message3);
|
||
|
|
||
|
assert.sameMembers([...mc.filterBySentAt(1234)], [message1, message2]);
|
||
|
|
||
|
mc.unregister(message2.id);
|
||
|
|
||
|
assert.sameMembers([...mc.filterBySentAt(1234)], [message1]);
|
||
|
});
|
||
|
});
|
||
|
});
|