Add frontend coverage for attachment metadata and strategy snapshot
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import React from 'react';
|
||||
import '@testing-library/jest-dom';
|
||||
import { fireEvent, render, screen } from '@testing-library/react';
|
||||
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
|
||||
import { ConfirmProvider } from './confirm';
|
||||
import { PromptProvider } from './prompt';
|
||||
import Attachments from './components/Attachments';
|
||||
import { ToastProvider } from './toast';
|
||||
import { I18nProvider } from './i18n/I18nProvider';
|
||||
import { api } from './api';
|
||||
|
||||
jest.mock('./api', () => ({
|
||||
@@ -23,11 +24,13 @@ test('attachments empty state renders drag and drop guidance', async () => {
|
||||
|
||||
render(
|
||||
<ToastProvider>
|
||||
<ConfirmProvider>
|
||||
<PromptProvider>
|
||||
<Attachments jobId={42} />
|
||||
</PromptProvider>
|
||||
</ConfirmProvider>
|
||||
<I18nProvider>
|
||||
<ConfirmProvider>
|
||||
<PromptProvider>
|
||||
<Attachments jobId={42} />
|
||||
</PromptProvider>
|
||||
</ConfirmProvider>
|
||||
</I18nProvider>
|
||||
</ToastProvider>,
|
||||
);
|
||||
|
||||
@@ -35,3 +38,47 @@ test('attachments empty state renders drag and drop guidance', async () => {
|
||||
expect(screen.getByText(/no attachments yet/i)).toBeInTheDocument();
|
||||
expect(screen.getByText(/max 10 mb each/i)).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('attachments metadata controls update purpose and ai usage', async () => {
|
||||
mockedApi.get.mockResolvedValueOnce({
|
||||
data: [
|
||||
{
|
||||
id: 7,
|
||||
fileName: 'resume.pdf',
|
||||
uploadDate: new Date().toISOString(),
|
||||
fileType: 'application/pdf',
|
||||
fileSize: 2048,
|
||||
purpose: 'resume',
|
||||
useForAi: true,
|
||||
},
|
||||
],
|
||||
} as any);
|
||||
mockedApi.patch.mockResolvedValue({ data: {} } as any);
|
||||
|
||||
render(
|
||||
<ToastProvider>
|
||||
<I18nProvider>
|
||||
<ConfirmProvider>
|
||||
<PromptProvider>
|
||||
<Attachments jobId={42} />
|
||||
</PromptProvider>
|
||||
</ConfirmProvider>
|
||||
</I18nProvider>
|
||||
</ToastProvider>,
|
||||
);
|
||||
|
||||
expect(await screen.findByDisplayValue(/resume/i)).toBeInTheDocument();
|
||||
|
||||
fireEvent.mouseDown(screen.getByRole('combobox'));
|
||||
fireEvent.click(await screen.findByRole('option', { name: /portfolio/i }));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(mockedApi.patch).toHaveBeenCalledWith('/attachments/7', expect.objectContaining({ purpose: 'portfolio', useForAi: true }));
|
||||
});
|
||||
|
||||
fireEvent.click(screen.getByRole('switch'));
|
||||
|
||||
await waitFor(() => {
|
||||
expect(mockedApi.patch).toHaveBeenCalledWith('/attachments/7', expect.objectContaining({ purpose: 'portfolio', useForAi: false }));
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user