Skip to content

Commit 02af7da

Browse files
authored
[PRMP-124] Resolved issue DocumentUploadLloydGeorgePreview tests (#782)
* Resolved issue with tests. Refactor DocumentUploadLloydGeorgePreview to improve rendering logic and ensure state is cleared when no documents are provided. * removed some unneeded commets
1 parent 7703aad commit 02af7da

File tree

2 files changed

+30
-21
lines changed

2 files changed

+30
-21
lines changed

app/src/components/blocks/_documentUpload/documentUploadLloydGeorgePreview/DocumentUploadLloydGeorgePreview.test.tsx

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { render, screen, waitFor } from '@testing-library/react';
1+
import { act, render, screen, waitFor } from '@testing-library/react';
22
import {
33
UploadDocument,
44
DOCUMENT_TYPE,
@@ -38,15 +38,20 @@ describe('DocumentUploadCompleteStage', () => {
3838
});
3939

4040
describe('Rendering', () => {
41-
it('renders without documents', () => {
42-
render(
43-
<DocumentUploadLloydGeorgePreview
44-
documents={documents}
45-
setMergedPdfBlob={mockSetMergedPdfBlob}
46-
/>,
41+
it('renders without documents', async () => {
42+
vi.mocked(getMergedPdfBlob).mockResolvedValue(
43+
new Blob([''], { type: 'application/pdf' }),
4744
);
4845

49-
// When no documents are provided, nothing should render
46+
await act(async () => {
47+
render(
48+
<DocumentUploadLloydGeorgePreview
49+
documents={documents}
50+
setMergedPdfBlob={mockSetMergedPdfBlob}
51+
/>,
52+
);
53+
});
54+
5055
expect(screen.queryByTestId('pdf-viewer')).not.toBeInTheDocument();
5156
});
5257

@@ -55,17 +60,19 @@ describe('DocumentUploadCompleteStage', () => {
5560
const mockBlob = new Blob(['test pdf content'], { type: 'application/pdf' });
5661
vi.mocked(getMergedPdfBlob).mockResolvedValue(mockBlob);
5762

58-
render(
59-
<DocumentUploadLloydGeorgePreview
60-
documents={testDocuments}
61-
setMergedPdfBlob={mockSetMergedPdfBlob}
62-
/>,
63-
);
63+
await act(async () => {
64+
render(
65+
<DocumentUploadLloydGeorgePreview
66+
documents={testDocuments}
67+
setMergedPdfBlob={mockSetMergedPdfBlob}
68+
/>,
69+
);
70+
});
71+
72+
expect(await screen.findByTestId('pdf-viewer')).toBeInTheDocument();
6473

65-
// Wait for the PDF merger to complete
6674
await waitFor(() => {
6775
expect(mockSetMergedPdfBlob).toHaveBeenCalledWith(mockBlob);
68-
expect(screen.getByTestId('pdf-viewer')).toBeInTheDocument();
6976
});
7077
});
7178
});

app/src/components/blocks/_documentUpload/documentUploadLloydGeorgePreview/DocumentUploadLloydGeorgePreview.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,23 @@ const DocumentUploadLloydGeorgePreview = ({ documents, setMergedPdfBlob }: Props
1313

1414
const runningRef = useRef(false);
1515
useEffect(() => {
16-
if (!documents || runningRef.current) {
16+
// If no docs or effect already running, ensure state cleared and exit
17+
if (!documents || documents.length === 0) {
18+
if (mergedPdfUrl) {
19+
setMergedPdfUrl('');
20+
}
1721
return;
1822
}
23+
if (runningRef.current) return;
1924

2025
runningRef.current = true;
2126

2227
const render = async (): Promise<void> => {
2328
const blob = await getMergedPdfBlob(documents.map((doc) => doc.file));
24-
2529
setMergedPdfBlob(blob);
26-
2730
const url = URL.createObjectURL(blob);
28-
2931
runningRef.current = false;
30-
return setMergedPdfUrl(url);
32+
setMergedPdfUrl(url);
3133
};
3234

3335
render().catch((err) => {

0 commit comments

Comments
 (0)