← Files DataARCHIVED FILE

templates/data-app/base/tests/report-refresh.test.mjs

1.91 KB · Sep 30, 2026 · 23:19 UTC

↓ Download file

import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import test from "node:test";

import { dataAppActionRequest } from "../src/data-app-actions.js";
import { reportDateMetadata } from "../src/report-date.js";

test("reports expose their snapshot date without a refresh action", async () => {
  const chrome = await readFile(new URL("../src/components/DataAppChrome.jsx", import.meta.url), "utf8");
  assert.match(chrome, /generatedAt && canEdit && surface !== "report" && \(\s*<DataAppRefreshControl/u);
  assert.match(chrome, /surface === "report" && <ReportDateLabel asOf=\{reportAsOf\} generatedAt=\{generatedAt\}/u);
  assert.doesNotMatch(chrome, /Update this report/u);
  assert.throws(() => dataAppActionRequest("refresh", { surface: "report" }), /only for dashboards/u);
  assert.throws(() => dataAppActionRequest("schedule-refresh", { surface: "report" }), /only for dashboards/u);
});

test("report cutoff dates are explicit and preparation dates never imply new evidence", () => {
  const generatedAt = "2026-08-19T17:00:00Z";
  const cutoff = reportDateMetadata({ asOf: "2026-08-18", generatedAt });
  assert.equal(cutoff.label, "As of");
  assert.equal(cutoff.timeZone, "UTC");
  assert.equal(cutoff.value, "2026-08-18");
  for (const asOf of [undefined, "2026-02-30", "2026-08-18T12:00:00Z", "invalid"])
    assert.equal(reportDateMetadata({ asOf, generatedAt }).label, "Prepared");
  assert.equal(reportDateMetadata({ generatedAt: "invalid" }), null);
  assert.equal(reportDateMetadata({}), null);
});

test("dashboard refresh still reruns its existing authorized queries", () => {
  const request = dataAppActionRequest("refresh", { surface: "dashboard", title: "Usage" });
  assert.match(request.prompt, /invoke \$build-dashboard to refresh this dashboard/u);
  assert.match(request.prompt, /Read its saved source requests and calculations/u);
  assert.match(request.prompt, /Preserve its layout/u);
});

SHA-256: 23efbc548bf8f80788b2fd9d38189293214f8e9a0ae18c1ecb762765296c999a