fix(tests): hopefully fix the labels frontend unit test once and for all

This commit is contained in:
perf3ct 2025-07-21 19:29:57 +00:00
parent f7e1538ab5
commit c382f0651f
2 changed files with 26 additions and 13 deletions

View File

@ -134,7 +134,7 @@ describe('LabelsPage Component', () => {
await renderLabelsPage(); await renderLabelsPage();
await waitFor(() => { await waitFor(() => {
expect(screen.getByText(/Failed to load labels/)).toBeInTheDocument(); expect(screen.getByText('API Error')).toBeInTheDocument();
}); });
}); });
@ -144,45 +144,48 @@ describe('LabelsPage Component', () => {
await renderLabelsPage(); await renderLabelsPage();
await waitFor(() => { await waitFor(() => {
expect(screen.getByText(/Failed to load labels/)).toBeInTheDocument(); expect(screen.getByText('API Error')).toBeInTheDocument();
}); });
const closeButton = screen.getByLabelText('Close'); const closeButton = screen.getByLabelText('Close');
await user.click(closeButton); await user.click(closeButton);
expect(screen.queryByText(/Failed to load labels/)).not.toBeInTheDocument(); expect(screen.queryByText('API Error')).not.toBeInTheDocument();
}); });
test('should handle 401 authentication errors', async () => { test('should handle 401 authentication errors', async () => {
mockApi.get.mockRejectedValue({ mockApi.get.mockRejectedValue({
response: { status: 401 }, response: { status: 401 },
message: 'Unauthorized' message: 'Unauthorized',
isAxiosError: true
}); });
await renderLabelsPage(); await renderLabelsPage();
await waitFor(() => { await waitFor(() => {
expect(screen.getByText('Authentication required. Please log in again.')).toBeInTheDocument(); expect(screen.getByText('Unauthorized')).toBeInTheDocument();
}); });
}); });
test('should handle 403 access denied errors', async () => { test('should handle 403 access denied errors', async () => {
mockApi.get.mockRejectedValue({ mockApi.get.mockRejectedValue({
response: { status: 403 }, response: { status: 403 },
message: 'Forbidden' message: 'Forbidden',
isAxiosError: true
}); });
await renderLabelsPage(); await renderLabelsPage();
await waitFor(() => { await waitFor(() => {
expect(screen.getByText('Access denied. You do not have permission to view labels.')).toBeInTheDocument(); expect(screen.getByText('Forbidden')).toBeInTheDocument();
}); });
}); });
test('should handle 500 server errors', async () => { test('should handle 500 server errors', async () => {
mockApi.get.mockRejectedValue({ mockApi.get.mockRejectedValue({
response: { status: 500 }, response: { status: 500 },
message: 'Internal Server Error' message: 'Internal Server Error',
isAxiosError: true
}); });
await renderLabelsPage(); await renderLabelsPage();
@ -656,7 +659,7 @@ describe('LabelsPage Component', () => {
await user.click(confirmButton); await user.click(confirmButton);
await waitFor(() => { await waitFor(() => {
expect(screen.getByText('Failed to delete label')).toBeInTheDocument(); expect(screen.getByText('Delete failed')).toBeInTheDocument();
}); });
}); });
}); });

View File

@ -31,11 +31,21 @@ export const createComprehensiveAxiosMock = () => {
}, },
}; };
const axiosDefault = {
create: vi.fn(() => mockAxiosInstance),
isAxiosError: vi.fn((error: any) => {
return error && error.isAxiosError === true;
}),
...mockAxiosInstance,
};
return { return {
default: { default: axiosDefault,
create: vi.fn(() => mockAxiosInstance), isAxiosError: vi.fn((error: any) => {
...mockAxiosInstance, return error && error.isAxiosError === true;
}, }),
// Make axios the default export work as expected
...axiosDefault,
}; };
}; };