diff --git a/packages/pubsub/src/__tests__/index.ts b/packages/pubsub/src/__tests__/index.ts index d239e99..a59f95d 100644 --- a/packages/pubsub/src/__tests__/index.ts +++ b/packages/pubsub/src/__tests__/index.ts @@ -1,6 +1,42 @@ import { InMemoryPubSub } from "../index"; -describe("pubsub", () => { +describe("InMemoryPubSub", () => { + test("subscribe", async () => { + const pubsub = new InMemoryPubSub(); + const messages = (async () => { + const messages = []; + for await (const message of pubsub.subscribe("topic")) { + messages.push(message); + if (message === "c") { + break; + } + } + return messages; + })(); + + pubsub.publish("topic", "a"); + pubsub.publish("topic", "b"); + pubsub.publish("topic", "c"); + await expect(messages).resolves.toEqual(["a", "b", "c"]); + }); + + test("unpublish", async () => { + const pubsub = new InMemoryPubSub(); + const messages = (async () => { + const messages = []; + for await (const message of pubsub.subscribe("topic")) { + messages.push(message); + } + return messages; + })(); + + pubsub.publish("topic", "a"); + pubsub.publish("topic", "b"); + pubsub.publish("topic", "c"); + pubsub.unpublish("topic"); + await expect(messages).resolves.toEqual(["a", "b", "c"]); + }); + test("close", () => { const pubsub = new InMemoryPubSub(); pubsub.close();