63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
import { expect } from 'chai';
|
|
import { MessageQueue } from '../../src/models/messageQueue';
|
|
import { MessageType } from '../../src/enums';
|
|
import { IMessage } from '../../src/models/message';
|
|
import { wait } from '../utils';
|
|
|
|
describe('MessageQueue', () => {
|
|
const createTestMessage = (): IMessage => {
|
|
return {
|
|
type: MessageType.OPEN,
|
|
src: 'src',
|
|
dst: 'dst'
|
|
};
|
|
};
|
|
|
|
describe('#addMessage', () => {
|
|
it('should add message to queue', () => {
|
|
const queue = new MessageQueue();
|
|
queue.addMessage(createTestMessage());
|
|
expect(queue.getMessages().length).to.eq(1);
|
|
});
|
|
});
|
|
|
|
describe('#readMessage', () => {
|
|
it('should return undefined for empty queue', () => {
|
|
const queue = new MessageQueue();
|
|
expect(queue.readMessage()).to.be.undefined;
|
|
});
|
|
|
|
it('should return message if any exists in queue', () => {
|
|
const queue = new MessageQueue();
|
|
const message = createTestMessage();
|
|
queue.addMessage(message);
|
|
|
|
expect(queue.readMessage()).to.deep.eq(message);
|
|
expect(queue.readMessage()).to.be.undefined;
|
|
});
|
|
});
|
|
|
|
describe('#getLastReadAt', () => {
|
|
it('should not be changed if no messages when read', () => {
|
|
const queue = new MessageQueue();
|
|
const lastReadAt = queue.getLastReadAt();
|
|
queue.readMessage();
|
|
expect(queue.getLastReadAt()).to.be.eq(lastReadAt);
|
|
});
|
|
|
|
it('should be changed when read message', async () => {
|
|
const queue = new MessageQueue();
|
|
const lastReadAt = queue.getLastReadAt();
|
|
queue.addMessage(createTestMessage());
|
|
|
|
await wait(10);
|
|
|
|
expect(queue.getLastReadAt()).to.be.eq(lastReadAt);
|
|
|
|
queue.readMessage();
|
|
|
|
expect(queue.getLastReadAt()).to.be.greaterThan(lastReadAt + 10);
|
|
});
|
|
});
|
|
});
|