Files
openclaw/ui/src/components/panel-refresh-status.test.ts
T
destire-mio ddb50fcfdb fix(ui): show Usage detail request failures (#108689)
* fix(ui): show Usage detail request failures

* fix(ui): surface stale panel refresh failures

Co-authored-by: destire-mio <248462155+destire-mio@users.noreply.github.com>

* ci: pick up periphery workflow fix

* chore(ui): regenerate panel status locales

* refactor(ui): split usage page helpers

* fix(ci): format drift + unused export

* style: format full changed set

* fix(ui): translate panel refresh errors

---------

Co-authored-by: destire-mio <248462155+destire-mio@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-16 07:33:05 -07:00

44 lines
1.5 KiB
TypeScript

/* @vitest-environment jsdom */
import { render } from "lit";
import { describe, expect, it, vi } from "vitest";
import {
beginPanelRefresh,
completePanelRefresh,
createPanelRefreshStatus,
failPanelRefresh,
renderPanelRefreshStatus,
} from "./panel-refresh-status.ts";
describe("panel refresh status", () => {
it("marks previously loaded data stale until a retry succeeds", () => {
const ready = completePanelRefresh();
const failed = failPanelRefresh(ready, "request failed");
expect(failed).toEqual({ error: "request failed", hasLoaded: true, stale: true });
expect(beginPanelRefresh(failed)).toEqual({ error: null, hasLoaded: true, stale: true });
expect(completePanelRefresh()).toEqual({ error: null, hasLoaded: true, stale: false });
});
it("renders a local retry action and stale-data marker", () => {
const onRetry = vi.fn();
const container = document.createElement("div");
const status = failPanelRefresh(completePanelRefresh(), "request failed");
render(renderPanelRefreshStatus({ status, onRetry }), container);
expect(container.textContent).toContain("request failed");
expect(container.textContent).toContain("Showing stale data");
container.querySelector<HTMLButtonElement>("button")?.click();
expect(onRetry).toHaveBeenCalledOnce();
});
it("does not mark a first-load failure stale", () => {
expect(failPanelRefresh(createPanelRefreshStatus(), "request failed")).toEqual({
error: "request failed",
hasLoaded: false,
stale: false,
});
});
});