theo-agent-dashboard

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

Setup.test.tsx (2122B)


      1 import { describe, it, expect, vi, beforeEach } from "vitest";
      2 import { render, screen, fireEvent } from "@testing-library/react";
      3 import { Setup } from "./Setup";
      4 import { useAuthStore } from "../../store/auth";
      5 
      6 beforeEach(() => {
      7   useAuthStore.setState({
      8     authenticated: false,
      9     configured: false,
     10     loading: false,
     11     error: null,
     12   });
     13   vi.restoreAllMocks();
     14   vi.stubGlobal("fetch", vi.fn().mockResolvedValue({
     15     ok: true,
     16     json: async () => ({}),
     17   }));
     18   Object.defineProperty(window, "location", {
     19     value: { ...window.location, href: "/", assign: vi.fn() },
     20     writable: true,
     21     configurable: true,
     22   });
     23 });
     24 
     25 describe("Setup", () => {
     26   it("renders setup form", () => {
     27     render(<Setup />);
     28     expect(screen.getByText("Initial Setup")).toBeInTheDocument();
     29     expect(screen.getByLabelText("Password")).toBeInTheDocument();
     30     expect(screen.getByLabelText("Confirm Password")).toBeInTheDocument();
     31     expect(screen.getByLabelText(/API Key/)).toBeInTheDocument();
     32     expect(screen.getByText("Create Account")).toBeInTheDocument();
     33   });
     34 
     35   it("shows optional label for API key", () => {
     36     render(<Setup />);
     37     expect(screen.getByText("(optional)")).toBeInTheDocument();
     38   });
     39 
     40   it("shows error when passwords don't match", async () => {
     41     render(<Setup />);
     42     fireEvent.change(screen.getByLabelText("Password"), { target: { value: "pass1" } });
     43     fireEvent.change(screen.getByLabelText("Confirm Password"), { target: { value: "pass2" } });
     44     fireEvent.click(screen.getByText("Create Account"));
     45     expect(screen.getByText("Passwords do not match")).toBeInTheDocument();
     46   });
     47 
     48   it("disables submit when fields are empty", () => {
     49     render(<Setup />);
     50     expect(screen.getByText("Create Account")).toBeDisabled();
     51   });
     52 
     53   it("enables submit when all required fields filled", () => {
     54     render(<Setup />);
     55     fireEvent.change(screen.getByLabelText("Password"), { target: { value: "pass" } });
     56     fireEvent.change(screen.getByLabelText("Confirm Password"), { target: { value: "pass" } });
     57     expect(screen.getByText("Create Account")).not.toBeDisabled();
     58   });
     59 });