Files
stack/apps/web/src/components/widgets/__tests__/TasksWidget.test.tsx
Jason Woltje cab8d690ab fix(#411): complete 2026-02-17 remediation sweep
Apply RLS context at task service boundaries, harden orchestrator/web integration and session startup behavior, re-enable targeted frontend tests, and lock vulnerable transitive dependencies so QA and security gates pass cleanly.
2026-02-17 14:19:15 -06:00

55 lines
1.6 KiB
TypeScript

import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
import { act, render, screen } from "@testing-library/react";
import { TasksWidget } from "../TasksWidget";
async function finishWidgetLoad(): Promise<void> {
await act(async () => {
await vi.advanceTimersByTimeAsync(500);
});
}
describe("TasksWidget", (): void => {
beforeEach((): void => {
vi.useFakeTimers();
});
afterEach((): void => {
vi.useRealTimers();
});
it("renders loading state initially", (): void => {
render(<TasksWidget id="tasks-1" />);
expect(screen.getByText("Loading tasks...")).toBeInTheDocument();
});
it("renders default summary stats", async (): Promise<void> => {
render(<TasksWidget id="tasks-1" />);
await finishWidgetLoad();
expect(screen.getByText("Total")).toBeInTheDocument();
expect(screen.getByText("In Progress")).toBeInTheDocument();
expect(screen.getByText("Done")).toBeInTheDocument();
expect(screen.getByText("3")).toBeInTheDocument();
});
it("renders default task rows", async (): Promise<void> => {
render(<TasksWidget id="tasks-1" />);
await finishWidgetLoad();
expect(screen.getByText("Complete project documentation")).toBeInTheDocument();
expect(screen.getByText("Review pull requests")).toBeInTheDocument();
expect(screen.getByText("Update dependencies")).toBeInTheDocument();
});
it("shows due date labels for each task", async (): Promise<void> => {
render(<TasksWidget id="tasks-1" />);
await finishWidgetLoad();
expect(screen.getAllByText(/Due:/).length).toBe(3);
});
});