test: add frontend dialog interaction coverage
This commit is contained in:
@@ -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 <button onClick={() => void confirm({ title: 'Delete attachment', message: 'Delete attachment "resume.pdf"?', confirmLabel: 'Delete', destructive: true })}>Delete attachment</button>;
|
||||
}
|
||||
|
||||
test('destructive confirm dialog shows warning state', async () => {
|
||||
render(
|
||||
<ConfirmProvider>
|
||||
<DeleteDemo />
|
||||
</ConfirmProvider>,
|
||||
);
|
||||
|
||||
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();
|
||||
});
|
||||
@@ -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 (
|
||||
<button onClick={() => void prompt({ title: 'Rename attachment', message: 'Choose a new name', defaultValue: 'resume.pdf', confirmLabel: 'Rename' })}>
|
||||
Rename attachment
|
||||
</button>
|
||||
);
|
||||
}
|
||||
|
||||
test('prompt dialog opens with default rename value', async () => {
|
||||
render(
|
||||
<ConfirmProvider>
|
||||
<PromptProvider>
|
||||
<RenameDemo />
|
||||
</PromptProvider>
|
||||
</ConfirmProvider>,
|
||||
);
|
||||
|
||||
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();
|
||||
});
|
||||
Reference in New Issue
Block a user