Skip to content

Commit 424626e

Browse files
fix sonar errors
1 parent d1cc324 commit 424626e

File tree

3 files changed

+82
-44
lines changed

3 files changed

+82
-44
lines changed

app/src/components/blocks/_admin/reviewsPage/ReviewsPage.test.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,20 @@ describe('ReviewsPage', () => {
204204
});
205205
});
206206

207-
it('displays loading spinner while fetching initial data', () => {
207+
it('displays loading spinner while fetching initial data', async () => {
208208
mockGetReviews.mockImplementation(
209209
() => new Promise((resolve) => setTimeout(() => resolve(mockReviewsResponse), 100)),
210210
);
211211

212212
renderComponent();
213213

214-
expect(screen.getByText('Loading...')).toBeInTheDocument();
214+
await waitFor(() => {
215+
expect(screen.getByText("Review reason")).toBeInTheDocument();
216+
});
217+
218+
await waitFor(() => {
219+
expect(screen.getByText('Loading...')).toBeInTheDocument();
220+
});
215221
});
216222
});
217223

app/src/components/blocks/_admin/reviewsPage/ReviewsPage.tsx

Lines changed: 73 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Button, ErrorMessage, Table, TextInput } from 'nhsuk-react-components';
2-
import { JSX, useEffect, useRef, useState } from 'react';
2+
import { useEffect, useRef, useState } from 'react';
33
import { Link } from 'react-router';
44
import useBaseAPIUrl from '../../../../helpers/hooks/useBaseAPIUrl';
55
import useTitle from '../../../../helpers/hooks/useTitle';
@@ -16,7 +16,7 @@ import { Pagination } from '../../../generic/paginationV2/Pagination';
1616
import SpinnerButton from '../../../generic/spinnerButton/SpinnerButton';
1717
import SpinnerV2 from '../../../generic/spinnerV2/SpinnerV2';
1818

19-
export const ReviewsPage = (): JSX.Element => {
19+
export const ReviewsPage = (): React.JSX.Element => {
2020
useTitle({ pageTitle: 'Admin - Reviews' });
2121
const baseUrl = useBaseAPIUrl();
2222
const inputRef = useRef<HTMLInputElement | null>(null);
@@ -59,7 +59,7 @@ export const ReviewsPage = (): JSX.Element => {
5959
return newTokens;
6060
});
6161
}
62-
} catch (error) {
62+
} catch {
6363
setFailedLoading(true);
6464
setCurrentPage(1);
6565
setPageTokens(['']);
@@ -174,44 +174,11 @@ export const ReviewsPage = (): JSX.Element => {
174174
</Table.Row>
175175
</Table.Head>
176176
<Table.Body>
177-
{failedLoading ? (
178-
<Table.Row>
179-
<Table.Cell colSpan={6}>
180-
<ErrorMessage>Failed to load reviews</ErrorMessage>
181-
</Table.Cell>
182-
</Table.Row>
183-
) : null}
184-
{reviews.length > 0 && (!isLoading || failedLoading) ? (
185-
reviews.map(
186-
(review): JSX.Element => (
187-
<Table.Row key={review.id}>
188-
<Table.Cell>{review.nhsNumber}</Table.Cell>
189-
<Table.Cell>{review.recordType}</Table.Cell>
190-
<Table.Cell>{review.uploader}</Table.Cell>
191-
<Table.Cell>{review.dateUploaded}</Table.Cell>
192-
<Table.Cell>{review.reviewReason}</Table.Cell>
193-
<Table.Cell className="nowrap">
194-
<Link
195-
to={review.id}
196-
data-testid={`view-record-link-${review.id}`}
197-
>
198-
View
199-
</Link>
200-
</Table.Cell>
201-
</Table.Row>
202-
),
203-
)
204-
) : failedLoading ? null : (
205-
<Table.Row>
206-
<Table.Cell colSpan={6}>
207-
{isLoading ? (
208-
<SpinnerV2 status="Loading..." />
209-
) : (
210-
<>No documents to review</>
211-
)}
212-
</Table.Cell>
213-
</Table.Row>
214-
)}
177+
<TableRows
178+
reviews={reviews}
179+
isLoading={isLoading}
180+
failedLoading={failedLoading}
181+
/>
215182
</Table.Body>
216183
</Table>
217184
<Pagination>
@@ -255,3 +222,68 @@ export const ReviewsPage = (): JSX.Element => {
255222
</>
256223
);
257224
};
225+
226+
type TableRowsProps = {
227+
reviews: ReviewListItem[];
228+
isLoading: boolean;
229+
failedLoading: boolean;
230+
};
231+
const TableRows = ({
232+
reviews,
233+
isLoading,
234+
failedLoading
235+
}: TableRowsProps): React.JSX.Element => {
236+
if (isLoading) {
237+
return (
238+
<Table.Row>
239+
<Table.Cell colSpan={6}>
240+
<SpinnerV2 status="Loading..." />
241+
</Table.Cell>
242+
</Table.Row>
243+
);
244+
}
245+
246+
if(reviews.length > 0) {
247+
return (
248+
<>
249+
{reviews.map(
250+
(review) => (
251+
<Table.Row key={review.id}>
252+
<Table.Cell>{review.nhsNumber}</Table.Cell>
253+
<Table.Cell>{review.recordType}</Table.Cell>
254+
<Table.Cell>{review.uploader}</Table.Cell>
255+
<Table.Cell>{review.dateUploaded}</Table.Cell>
256+
<Table.Cell>{review.reviewReason}</Table.Cell>
257+
<Table.Cell className="nowrap">
258+
<Link
259+
to={review.id}
260+
data-testid={`view-record-link-${review.id}`}
261+
>
262+
View
263+
</Link>
264+
</Table.Cell>
265+
</Table.Row>
266+
)
267+
)}
268+
</>
269+
);
270+
}
271+
272+
if (failedLoading) {
273+
return (
274+
<Table.Row>
275+
<Table.Cell colSpan={6}>
276+
<ErrorMessage>Failed to load reviews</ErrorMessage>
277+
</Table.Cell>
278+
</Table.Row>
279+
);
280+
}
281+
282+
return (
283+
<Table.Row>
284+
<Table.Cell colSpan={6}>
285+
No documents to review
286+
</Table.Cell>
287+
</Table.Row>
288+
);
289+
};

app/src/helpers/requests/getReviews.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const getReviews = async (
1515
const params = new URLSearchParams({
1616
limit: limit.toString(),
1717
startKey: nextPageStartKey,
18-
nhsNumber: nhsNumber?.replace(/\s/g, ''), // replace whitespace
18+
nhsNumber: nhsNumber?.replaceAll(/\s/g, ''), // replace whitespace
1919
});
2020

2121
if (isLocal) {

0 commit comments

Comments
 (0)