import { expect, test } from "vitest" import { Dispatcher, DownCountSelector } from "#Source/orchestration/index.ts" test("Dispatcher getSelector reuses selectors by id and applies filter on first creation", async () => { const dispatcher = new Dispatcher({ itemList: ["alpha", "beta", "gamma"], }) const firstResult = dispatcher.getSelector({ id: "shared", filter: (item) => item !== "alpha", }) const secondResult = dispatcher.getSelector({ id: "shared", filter: () => true, }) expect(firstResult.selector).toBeInstanceOf(DownCountSelector) expect(secondResult.selector).toBe(firstResult.selector) const firstItem = await firstResult.selector.getItem() expect(firstItem.isRight()).toBe(true) expect(firstItem.assertRight().getRight().item).toBe("beta") }) test("Dispatcher destroySelector discards an existing selector and allows recreation", () => { const dispatcher = new Dispatcher({ itemList: ["alpha", "beta"], }) const firstSelector = dispatcher.getSelector({ id: "shared" }).selector dispatcher.destroySelector("missing") dispatcher.destroySelector("shared") const recreatedSelector = dispatcher.getSelector({ id: "shared" }).selector expect(recreatedSelector).not.toBe(firstSelector) })