Files
sass-mohfarawati/tests/component/marquee-settings-form.test.tsx
T
Moh e2e06be86e test: add comprehensive automated test coverage
- Vitest multi-project setup (unit / integration / component)
- Real-Postgres integration harness via in-process PGlite (TEST_DATABASE_URL
  override), migrations applied per worker; production code untouched
- Unit: routing, locale, validation/Zod schemas, metadata, mail, site-theme,
  marquee, media, portfolio helpers, plus architecture-rule tests
- Integration: Prisma data layer, API routes, and all server actions
- Component: UI primitives and form components (jsdom + Testing Library)
- 371 tests passing
2026-08-06 02:27:20 +02:00

29 lines
1.2 KiB
TypeScript

import { render, screen } from "@testing-library/react";
import { describe, expect, it, vi } from "vitest";
import { MarqueeSettingsForm } from "@/components/admin/marquee-settings-form";
import { buildDefaultMarqueeSettings } from "@/lib/marquee-settings";
describe("MarqueeSettingsForm", () => {
it("renders a textarea per row with german default values", () => {
const settings = buildDefaultMarqueeSettings();
settings.locales.de.row1 = "First row value";
render(<MarqueeSettingsForm action={vi.fn()} initialSettings={settings} />);
for (const name of ["row1-de", "row2-de", "row3-de", "row4-de"]) {
const field = document.querySelector(`textarea[name="${name}"]`);
expect(field).not.toBeNull();
}
expect((document.querySelector('textarea[name="row1-de"]') as HTMLTextAreaElement).value).toBe(
"First row value",
);
});
it("wires the server action onto the form and renders a submit button", () => {
const action = vi.fn();
render(<MarqueeSettingsForm action={action} initialSettings={buildDefaultMarqueeSettings()} />);
expect(document.querySelector("form#marquee-settings-form")).not.toBeNull();
expect(screen.getByRole("button", { name: /save marquee/i })).toBeInTheDocument();
});
});