import { signal } from "@preact-signals/unified-signals";
import React from "react";
import { describe, vi } from "vitest";
import { itRenderer } from "../../../__tests__/utils";
import { Computed } from "../components/Computed";
describe.concurrent("Computed()", () => {
itRenderer("should render", async ({ expect, reactRoot, root }) => {
await reactRoot().render({() => 10});
const content = root.firstChild;
expect(content).is.instanceOf(Text);
expect(content).has.property("data", "10");
});
itRenderer("should be reactive", async ({ expect, act, reactRoot, root }) => {
const multiplier = signal(1);
const compFn = vi.fn(() => 10 * multiplier.value);
await reactRoot().render({compFn});
const content = root.firstChild;
expect(content).is.instanceOf(Text);
expect(content).has.property("data", "10");
expect(compFn).toHaveBeenCalledTimes(1);
await act(() => {
multiplier.value = 2;
});
expect(content).is.instanceOf(Text);
expect(compFn).toHaveBeenCalledTimes(2);
expect(content).has.property("data", "20");
});
});