feat: advance phase 5 AI workflow
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import '@testing-library/jest-dom';
|
||||
import { render, screen, waitFor } from '@testing-library/react';
|
||||
import { fireEvent, render, screen, waitFor } from '@testing-library/react';
|
||||
import { ToastProvider } from './toast';
|
||||
import { I18nProvider } from './i18n/I18nProvider';
|
||||
import { api } from './api';
|
||||
@@ -68,3 +68,22 @@ test('does not auto-import when no initialUrl is given', async () => {
|
||||
expect(await screen.findByRole('dialog')).toBeInTheDocument();
|
||||
expect(mockedApi.post).not.toHaveBeenCalledWith('/jobimport/preview', expect.anything());
|
||||
});
|
||||
|
||||
|
||||
test('can generate a tailored CV after creating a job', async () => {
|
||||
mockedApi.post.mockImplementation((url: string) => {
|
||||
if (url === '/jobimport/preview') return Promise.resolve({ data: { success: true, title: 'Imported Backend Role', company: 'Acme', description: 'desc' } } as any);
|
||||
if (url === '/companies') return Promise.resolve({ data: { id: 1, name: 'Acme' } } as any);
|
||||
if (url === '/jobapplications') return Promise.resolve({ data: { id: 42 } } as any);
|
||||
return Promise.resolve({ data: {} } as any);
|
||||
});
|
||||
renderModal('https://example.com/jobs/123');
|
||||
|
||||
expect(await screen.findByDisplayValue('Imported Backend Role')).toBeInTheDocument();
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Continue' }));
|
||||
fireEvent.click(await screen.findByLabelText('Generate a tailored CV draft after creating this job'));
|
||||
for (let step = 0; step < 3; step += 1) fireEvent.click(screen.getByRole('button', { name: 'Skip and continue' }));
|
||||
fireEvent.click(screen.getByRole('button', { name: /create job/i }));
|
||||
|
||||
await waitFor(() => expect(mockedApi.post).toHaveBeenCalledWith('/jobapplications/42/generate-tailored-cv-draft'));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user