From 16991fb76bed1ddec3d5f8d58a392c190eb81598 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Apr 2026 20:07:06 +0200 Subject: [PATCH] Add unit test for ProjectDialoguesPanel --- tests/unit/project-dialogues-panel.test.tsx | 64 +++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/unit/project-dialogues-panel.test.tsx diff --git a/tests/unit/project-dialogues-panel.test.tsx b/tests/unit/project-dialogues-panel.test.tsx new file mode 100644 index 00000000..a5276690 --- /dev/null +++ b/tests/unit/project-dialogues-panel.test.tsx @@ -0,0 +1,64 @@ +import { fireEvent, render, screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; + +import { ProjectDialoguesPanel } from "../../src/app/ProjectDialoguesPanel"; +import { createProjectDialogue } from "../../src/dialogues/project-dialogues"; + +describe("ProjectDialoguesPanel", () => { + it("lets the user type into title, speaker, and text fields without crashing", () => { + const dialogue = createProjectDialogue({ + id: "dialogue-market", + title: "Market Greeting", + lines: [ + { + id: "dialogue-line-1", + speakerName: "Merchant", + text: "Fresh fruit." + } + ] + }); + + render( + {}} + onAddDialogue={() => {}} + onDeleteDialogue={() => {}} + onSetDialogueTitle={vi.fn()} + onAddDialogueLine={() => {}} + onDeleteDialogueLine={() => {}} + onSetDialogueLineSpeaker={vi.fn()} + onSetDialogueLineText={vi.fn()} + /> + ); + + const titleInput = screen.getByDisplayValue("Market Greeting"); + const speakerInput = screen.getByDisplayValue("Merchant"); + const textInput = screen.getByDisplayValue("Fresh fruit."); + + fireEvent.change(titleInput, { + target: { + value: "Morning Market" + } + }); + fireEvent.change(speakerInput, { + target: { + value: "Vendor" + } + }); + fireEvent.change(textInput, { + target: { + value: "Fresh fruit and bread." + } + }); + + expect(titleInput).toHaveValue("Morning Market"); + expect(speakerInput).toHaveValue("Vendor"); + expect(textInput).toHaveValue("Fresh fruit and bread."); + }); +});