deno.land / x / solid@v1.5.6 / test / observable.spec.ts
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293import { createRoot, createSignal, from, observable } from "../src";
describe("Observable operator", () => { test("to observable", () => { let out: string; let set: (v: string) => void; createRoot(() => { const [s, _set] = createSignal("Hi"), obsv$ = observable(s);
set = _set; obsv$.subscribe({ next: v => (out = v) }); }); expect(out!).toBe("Hi"); set!("John"); expect(out!).toBe("John"); });
test("preserve the observer's next binding", () => { const observer = { next: jest.fn().mockReturnThis() };
createRoot(() => { const [s] = createSignal("Hi"), obsv$ = observable(s);
obsv$.subscribe(observer); }); expect(observer.next).toHaveReturnedWith(observer); });
test("observable throws TypeError on non-object", () => { const [s, _set] = createSignal("Hi"); const o = observable(s); expect(() => o.subscribe(null as any)).toThrow(TypeError); });
test("observable unsubscribe", () => { const [s, set] = createSignal("Hi"); const o = observable(s); let out: string; let subscription: any; createRoot(() => { subscription = o.subscribe({ next(v) { out = v; } }); }); set("John"); expect(out!).toBe("John"); subscription.unsubscribe(); set("Benjamin"); expect(out!).toBe("John"); });});
describe("from transform", () => { test("from subscribable", async () => { let out: () => string | undefined; let set: (v: string) => void; createRoot(() => { const [s, _set] = createSignal("Hi"), obsv$ = observable(s);
set = _set; out = from(obsv$); }); expect(out!()).toBe("Hi"); set!("John"); expect(out!()).toBe("John"); });
test("from producer", async () => { let out: () => string | undefined; let set: (v: string) => void; createRoot(() => { const [s, _set] = createSignal("Hi"), obsv$ = observable(s);
set = _set; out = from(set => { const sub = obsv$.subscribe(set); return () => sub.unsubscribe(); }); }); expect(out!()).toBe("Hi"); set!("John"); expect(out!()).toBe("John"); });});
Version Info