diff --git a/src/admin/routes/submissions/[form]/index.tsx b/src/admin/routes/submissions/[form]/index.tsx
index c442791..b04aef6 100644
--- a/src/admin/routes/submissions/[form]/index.tsx
+++ b/src/admin/routes/submissions/[form]/index.tsx
@@ -31,10 +31,10 @@ export default function SubmissionsFormRoute(
| ID | Submitted | Status | |
- {(data.items as Array<{ id: string; createdAt: number; status: string }>).map((s) => (
+ {(data.items as Array<{ id: string; receivedAt: number; status: string }>).map((s) => (
{s.id} |
- {new Date(s.createdAt).toLocaleString()} |
+ {new Date(s.receivedAt).toLocaleString()} |
{s.status} |
View |
diff --git a/tests/admin/submissions_list_test.tsx b/tests/admin/submissions_list_test.tsx
new file mode 100644
index 0000000..743bdae
--- /dev/null
+++ b/tests/admin/submissions_list_test.tsx
@@ -0,0 +1,27 @@
+/** @jsxImportSource preact */
+/**
+ * Regression test: the per-form submissions list must render the submission
+ * timestamp from `receivedAt` (Unix ms, the field on the Submission
+ * interface). It previously read `s.createdAt`, which does not exist, so
+ * every row showed "Invalid Date".
+ */
+
+import { assertEquals, assertStringIncludes } from "https://deno.land/std@0.224.0/assert/mod.ts";
+import { render } from "preact-render-to-string";
+import SubmissionsFormRoute from "../../src/admin/routes/submissions/[form]/index.tsx";
+
+Deno.test("submissions list: renders a valid date from receivedAt (not 'Invalid Date')", () => {
+ const receivedAt = 1788249949694;
+ const html = render(
+ ,
+ );
+
+ assertEquals(html.includes("Invalid Date"), false);
+ assertStringIncludes(html, new Date(receivedAt).toLocaleString());
+});