Spaces:
Sleeping
Sleeping
| import { fireEvent, render, screen } from "@testing-library/react"; | |
| import { describe, expect, it, vi } from "vitest"; | |
| import { ConsentGate } from "./ConsentGate"; | |
| describe("ConsentGate", () => { | |
| it("requires both consent checks before starting", () => { | |
| const onConsent = vi.fn(); | |
| render(<ConsentGate error={null} isSubmitting={false} onConsent={onConsent} />); | |
| const start = screen.getByRole("button", { name: "Bắt đầu phiên dịch" }); | |
| expect(start).toBeDisabled(); | |
| expect(screen.getByRole("heading", { name: "Phiên dịch khám bệnh trực tiếp" })).toBeInTheDocument(); | |
| expect( | |
| screen.getByText(/CarePath chỉ hỗ trợ phiên dịch/), | |
| ).toBeInTheDocument(); | |
| fireEvent.click( | |
| screen.getByLabelText(/Tôi đã được giải thích rằng bản dịch do AI tạo ra có thể có lỗi/), | |
| ); | |
| expect(start).toBeDisabled(); | |
| fireEvent.click( | |
| screen.getByLabelText(/Tôi đã được giải thích rằng có thể yêu cầu phiên dịch viên trực tiếp/), | |
| ); | |
| expect(start).toBeEnabled(); | |
| fireEvent.click(start); | |
| expect(onConsent).toHaveBeenCalledWith( | |
| expect.objectContaining({ | |
| ai_disclosure: true, | |
| interpreter_right: true, | |
| scope: "translation_aid", | |
| }), | |
| ); | |
| }); | |
| it("announces a startup error", () => { | |
| render(<ConsentGate error="Không thể bắt đầu phiên dịch." isSubmitting={false} onConsent={vi.fn()} />); | |
| expect(screen.getByRole("alert")).toHaveTextContent("Không thể bắt đầu phiên dịch."); | |
| }); | |
| it("keeps the English companion marked as English", () => { | |
| render(<ConsentGate error={null} isSubmitting={false} onConsent={vi.fn()} />); | |
| expect(screen.getByText(/AI-generated translations can contain errors/)).toHaveAttribute("lang", "en"); | |
| }); | |
| }); | |