From 51e3d695b34e42a6c07d7828ab02440f46ae6a43 Mon Sep 17 00:00:00 2001 From: cesnimda Date: Sun, 22 Mar 2026 14:29:31 +0100 Subject: [PATCH] test: add frontend dialog interaction coverage --- job-tracker-ui/src/confirm-flow.test.tsx | 23 ++++++++++++++++++ job-tracker-ui/src/dialog-flow.test.tsx | 30 ++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 job-tracker-ui/src/confirm-flow.test.tsx create mode 100644 job-tracker-ui/src/dialog-flow.test.tsx diff --git a/job-tracker-ui/src/confirm-flow.test.tsx b/job-tracker-ui/src/confirm-flow.test.tsx new file mode 100644 index 0000000..7aa407a --- /dev/null +++ b/job-tracker-ui/src/confirm-flow.test.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import '@testing-library/jest-dom'; +import { fireEvent, render, screen } from '@testing-library/react'; +import { ConfirmProvider } from './confirm'; +import { useConfirm } from './confirm'; + +function DeleteDemo() { + const { confirm } = useConfirm(); + return ; +} + +test('destructive confirm dialog shows warning state', async () => { + render( + + + , + ); + + fireEvent.click(screen.getByRole('button', { name: /delete attachment/i })); + + expect(await screen.findByText(/this action may be hard to undo/i)).toBeInTheDocument(); + expect(screen.getByRole('button', { name: /^delete$/i })).toBeInTheDocument(); +}); diff --git a/job-tracker-ui/src/dialog-flow.test.tsx b/job-tracker-ui/src/dialog-flow.test.tsx new file mode 100644 index 0000000..827fd5f --- /dev/null +++ b/job-tracker-ui/src/dialog-flow.test.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import '@testing-library/jest-dom'; +import { render, screen, fireEvent } from '@testing-library/react'; +import { ConfirmProvider } from './confirm'; +import { PromptProvider, usePrompt } from './prompt'; + +function RenameDemo() { + const { prompt } = usePrompt(); + return ( + + ); +} + +test('prompt dialog opens with default rename value', async () => { + render( + + + + + , + ); + + fireEvent.click(screen.getByRole('button', { name: /rename attachment/i })); + + expect(await screen.findByDisplayValue('resume.pdf')).toBeInTheDocument(); + expect(screen.getByText(/choose a new name/i)).toBeInTheDocument(); + expect(screen.getByText(/10\/180/i)).toBeInTheDocument(); +});