@@ -39,9 +39,11 @@ function ErrataDetail({data}) {
}
export default function ErrataDetailLoader() {
+ const slug = useLocation().pathname.substring(1);
+
return (
-
+
);
}
diff --git a/src/app/pages/errata-detail/progress-bar/progress-bar.js b/src/app/pages/errata-detail/progress-bar/progress-bar.tsx
similarity index 79%
rename from src/app/pages/errata-detail/progress-bar/progress-bar.js
rename to src/app/pages/errata-detail/progress-bar/progress-bar.tsx
index 4ffe18299..1a5599edc 100644
--- a/src/app/pages/errata-detail/progress-bar/progress-bar.js
+++ b/src/app/pages/errata-detail/progress-bar/progress-bar.tsx
@@ -2,14 +2,23 @@ import React from 'react';
import './progress-bar.scss';
// eslint-disable-next-line complexity
-export default function ProgressBar({status, barStatus}) {
- const thirdNodeFill = ['Corrected', 'Will correct'].includes(barStatus) ?
- ' filled' : ' filled-no';
- const bars = barStatus ? 2 : {
- 'In Review': 0,
- 'Reviewed': 1,
- 'Will Correct': 1
- }[status];
+export default function ProgressBar({
+ status,
+ barStatus
+}: {
+ status: string;
+ barStatus: string;
+}) {
+ const thirdNodeFill = ['Corrected', 'Will correct'].includes(barStatus)
+ ? ' filled'
+ : ' filled-no';
+ const bars = barStatus
+ ? 2
+ : ({
+ 'In Review': 0,
+ Reviewed: 1,
+ 'Will Correct': 1
+ }[status] as number);
const firstNodeClass = bars === 0 ? ' filled ' : '';
const secondNodeClass = bars === 1 ? ' filled' : '';
const thirdNodeClass = bars > 1 ? thirdNodeFill : '';
diff --git a/test/src/pages/errata/errata-detail.test.tsx b/test/src/pages/errata/errata-detail.test.tsx
new file mode 100644
index 000000000..13790d6fc
--- /dev/null
+++ b/test/src/pages/errata/errata-detail.test.tsx
@@ -0,0 +1,66 @@
+import React from 'react';
+import {render, screen} from '@testing-library/preact';
+import ErrataDetailLoader from '~/pages/errata-detail/errata-detail';
+import MemoryRouter from '~/../../test/helpers/future-memory-router';
+import ProgressBar from '~/pages/errata-detail/progress-bar/progress-bar';
+import * as HE from '~/helpers/errata';
+import * as DH from '~/helpers/use-document-head';
+
+jest.spyOn(DH, 'setPageTitleAndDescriptionFromBookData').mockReturnValue();
+
+describe('Errata Detail', () => {
+ it('renders', async () => {
+ render(
+
+
+
+ );
+ await screen.findByRole('heading', {
+ level: 1,
+ name: 'Errata Submission Details'
+ });
+ await screen.findByText('You can check', {exact: false});
+ });
+ it('renders decision details', async () => {
+ const spySSED = jest
+ .spyOn(HE, 'shouldShowDecisionDetails')
+ .mockReturnValueOnce(true);
+
+ render(
+
+
+
+ );
+ await screen.findByText('You can check', {exact: false});
+ const bb = document.querySelector('.body-block.graybottom');
+
+ expect(bb?.textContent).toBe('Decision');
+ spySSED.mockReset();
+ });
+ describe('progress bar', () => {
+ it('represents reviewed', () => {
+ render(
);
+ const bar = document.querySelectorAll('.progress-bar-layer')[1];
+
+ expect(bar?.innerHTML).toBe(
+ '
'
+ );
+ });
+ it('represents will-correct', () => {
+ render(
);
+ const bar = document.querySelectorAll('.progress-bar-layer')[1];
+
+ expect(bar?.innerHTML).toBe(
+ '
'
+ );
+ });
+ it('represents corrected', () => {
+ render(
);
+ const bar = document.querySelectorAll('.progress-bar-layer')[1];
+
+ expect(bar?.innerHTML).toBe(
+ '
'
+ );
+ });
+ });
+});