import { composeStories } from "@storybook/react"; import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import * as surveyBuilderStories from "./SurveyBuilder.stories"; const { Default, WithQuestions, CustomerFeedback, EmployeeEngagement, ReadOnly, } = composeStories(surveyBuilderStories); describe("SurveyBuilder stories", () => { describe("Default story", () => { it("should render survey builder interface", () => { render(); // Should have basic survey building interface const addButtons = screen.queryAllByText(/Add/i); expect(addButtons.length).toBeGreaterThanOrEqual(0); }); }); describe("WithQuestions story", () => { it("should render survey questions", () => { render(); expect(screen.getByText("What is your name?")).toBeInTheDocument(); expect( screen.getByText("How satisfied are you with our service?"), ).toBeInTheDocument(); }); it("should render different question types", () => { render(); // Check for various question elements const questionElements = screen.queryAllByText(/name|email|satisfied/i); expect(questionElements.length).toBeGreaterThan(0); }); }); describe("CustomerFeedback story", () => { it("should render customer feedback survey", () => { render(); expect(screen.getByText("Customer Feedback Survey")).toBeInTheDocument(); }); it("should render feedback questions", () => { render(); // Check for typical feedback questions const feedbackElements = screen.queryAllByText( /product|service|recommend/i, ); expect(feedbackElements.length).toBeGreaterThan(0); }); }); describe("EmployeeEngagement story", () => { it("should render employee engagement survey", () => { render(); expect( screen.getByText("Employee Engagement Survey"), ).toBeInTheDocument(); }); it("should render engagement questions", () => { render(); // Check for employee-related questions const engagementElements = screen.queryAllByText( /job|team|management|work/i, ); expect(engagementElements.length).toBeGreaterThan(0); }); }); describe("ReadOnly story", () => { it("should render in read-only mode", () => { render(); // Should render but without edit capabilities expect(screen.getByText("What is your name?")).toBeInTheDocument(); }); }); });