64 lines
1.7 KiB
TypeScript
64 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "@jest/globals";
|
|
|
|
import { MessageQueue } from "../../src/models/messageQueue";
|
|
import { MessageType } from "../../src/enums";
|
|
import type { 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).toBe(1);
|
|
});
|
|
});
|
|
|
|
describe("#readMessage", () => {
|
|
it("should return undefined for empty queue", () => {
|
|
const queue = new MessageQueue();
|
|
expect(queue.readMessage()).toBeUndefined();
|
|
});
|
|
|
|
it("should return message if any exists in queue", () => {
|
|
const queue = new MessageQueue();
|
|
const message = createTestMessage();
|
|
queue.addMessage(message);
|
|
|
|
expect(queue.readMessage()).toEqual(message);
|
|
expect(queue.readMessage()).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
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()).toBe(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()).toBe(lastReadAt);
|
|
|
|
queue.readMessage();
|
|
|
|
expect(queue.getLastReadAt()).toBeGreaterThanOrEqual(lastReadAt + 10);
|
|
});
|
|
});
|
|
});
|