import { Late, Primitive, Shared } from "silentium"; import { expect, test, vi } from "vitest"; import { Deferred } from "../behaviors/Deferred"; test("Deferred.test", () => { const $url = Late("http://hello.com"); const $layout = Late(); const urlWithLayoutSrc = Shared(Deferred($url, $layout)); const g1 = vi.fn(); urlWithLayoutSrc.then(g1); expect(g1).not.toHaveBeenCalled(); $layout.use("layout here"); const g2 = vi.fn(); urlWithLayoutSrc.then(g2); $url.use("http://new.com"); expect(g2).toHaveBeenCalledWith("http://hello.com"); const urlSync = Primitive(urlWithLayoutSrc); expect(urlSync.primitive()).toBe("http://hello.com"); $layout.use("layout here again"); expect(urlSync.primitive()).toBe("http://new.com"); });