aboutsummaryrefslogtreecommitdiffhomepage
path: root/frontend/app/components/Gaming/DataTable.test.tsx
blob: 08c7336e3449766d34fb3a8559b2c94e10d59bbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
 * @vitest-environment jsdom
 */
import { cleanup, render, screen } from "@testing-library/react";
import { afterEach, describe, expect, test } from "vitest";
import DataTable, { DataTableCell, formatUnixTimestamp } from "./DataTable";

afterEach(() => {
  cleanup();
});

describe("DataTable", () => {
  test("renders headers", () => {
    render(
      <DataTable headers={["A", "B", "C"]}>
        <tr>
          <DataTableCell>1</DataTableCell>
          <DataTableCell>2</DataTableCell>
          <DataTableCell>3</DataTableCell>
        </tr>
      </DataTable>,
    );
    expect(screen.getByText("A")).toBeDefined();
    expect(screen.getByText("B")).toBeDefined();
    expect(screen.getByText("C")).toBeDefined();
  });

  test("renders body cells", () => {
    render(
      <DataTable headers={["H"]}>
        <tr>
          <DataTableCell>cell content</DataTableCell>
        </tr>
      </DataTable>,
    );
    expect(screen.getByText("cell content")).toBeDefined();
  });

  test("renders multiple rows", () => {
    render(
      <DataTable headers={["Name"]}>
        <tr>
          <DataTableCell>Alice</DataTableCell>
        </tr>
        <tr>
          <DataTableCell>Bob</DataTableCell>
        </tr>
      </DataTable>,
    );
    expect(screen.getByText("Alice")).toBeDefined();
    expect(screen.getByText("Bob")).toBeDefined();
  });
});

describe("formatUnixTimestamp", () => {
  test("formats timestamp correctly", () => {
    // 2026-03-01 12:30 JST (UTC+9) = 2026-03-01 03:30 UTC
    const timestamp = Date.UTC(2026, 2, 1, 3, 30, 0) / 1000;
    const result = formatUnixTimestamp(timestamp);
    // Result depends on local timezone; just check the format pattern
    expect(result).toMatch(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/);
  });

  test("pads single-digit months and days", () => {
    // Use a date where month and day are single digits
    const timestamp = Date.UTC(2026, 0, 5, 0, 0, 0) / 1000;
    const result = formatUnixTimestamp(timestamp);
    expect(result).toMatch(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/);
  });
});