cqrs-eda
Version:
Lightweight CQRS and Event-Driven Architecture library using TypeScript decorators, handlers and typings. Perfect for scalable event-driven apps.
52 lines (39 loc) • 1.49 kB
text/typescript
import { describe, it, expect, beforeEach } from "vitest";
import { Observer, getObserverRegistry } from "./decorators";
describe("Observer decorator and registry", () => {
beforeEach(() => {
getObserverRegistry().clear();
});
it("should register a single observer for an event", () => {
class ObserverOne {}
const registry = getObserverRegistry();
const observers = registry.get("EVENT_ONE");
expect(observers).toBeDefined();
expect(observers!.length).toBe(1);
expect(observers![0]).toBe(ObserverOne);
});
it("should register multiple observers for the same event", () => {
class ObserverA {}
class ObserverB {}
const registry = getObserverRegistry();
const observers = registry.get("EVENT_MULTI");
expect(observers).toBeDefined();
expect(observers!.length).toBe(2);
expect(observers).toContain(ObserverA);
expect(observers).toContain(ObserverB);
});
it("should not create observers for different events in the same list", () => {
class ObserverA {}
class ObserverB {}
const registry = getObserverRegistry();
expect(registry.get("EVENT_A")).toContain(ObserverA);
expect(registry.get("EVENT_B")).toContain(ObserverB);
expect(registry.get("EVENT_A")).not.toContain(ObserverB);
expect(registry.get("EVENT_B")).not.toContain(ObserverA);
});
});