fix(app): harden account and workflow state

This commit is contained in:
cesnimda
2026-08-24 20:21:09 +02:00
parent e7cacad7d6
commit dca5daa1a2
32 changed files with 811 additions and 86 deletions
@@ -0,0 +1,36 @@
import React from "react";
import "@testing-library/jest-dom";
import { act, render, screen } from "@testing-library/react";
import { useViewResource } from "./hooks/useViewResource";
function deferred<T>() {
let resolve!: (value: T) => void;
const promise = new Promise<T>((next) => { resolve = next; });
return { promise, resolve };
}
it("ignores an older request that completes after a newer dependency load", async () => {
const first = deferred<string>();
const second = deferred<string>();
const load = jest.fn((key: string) => key === "first" ? first.promise : second.promise);
function Probe({ query }: { query: string }) {
const resource = useViewResource(() => load(query), {
initialData: "empty",
errorMessage: "Unable to load.",
deps: [query],
});
return <div>{resource.data}</div>;
}
const view = render(<Probe query="first" />);
view.rerender(<Probe query="second" />);
await act(async () => { second.resolve("new result"); });
expect(screen.getByText("new result")).toBeInTheDocument();
await act(async () => { first.resolve("stale result"); });
expect(screen.getByText("new result")).toBeInTheDocument();
expect(screen.queryByText("stale result")).not.toBeInTheDocument();
});