diff --git a/app/pages/reporter/application/[applicationId]/version/[versionNumber]/disclaimer.tsx b/app/pages/reporter/application/[applicationId]/version/[versionNumber]/disclaimer.tsx index 6ffe982ab6..4259c5b422 100644 --- a/app/pages/reporter/application/[applicationId]/version/[versionNumber]/disclaimer.tsx +++ b/app/pages/reporter/application/[applicationId]/version/[versionNumber]/disclaimer.tsx @@ -62,6 +62,11 @@ class NewApplicationDisclaimer extends Component { latestDraftRevision } = application; + if (!applicationRevision || !latestDraftRevision) { + router.push('/404'); + return null; + } + if ( latestDraftRevision.versionNumber !== applicationRevision.versionNumber ) { diff --git a/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/__snapshots__/view.test.tsx.snap b/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/__snapshots__/view.test.tsx.snap index 585b262ba3..5bee99db4a 100644 --- a/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/__snapshots__/view.test.tsx.snap +++ b/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/__snapshots__/view.test.tsx.snap @@ -63,6 +63,13 @@ exports[`View submitted application page displays a "Resume latest draft" button { + let router; + beforeEach(() => { + router = { + query: { + applicationId: 'skjdh839', + hasSwrsReport: true, + version: 1 + }, + push: jest.fn() + }; + }); + it('matches the last accepted Snapshot', () => { const wrapper = shallow( ); expect(wrapper).toMatchSnapshot(); }); + it('passes an application to the ApplicationConsent component', () => { const wrapper = shallow( @@ -50,4 +55,52 @@ describe('Interstitial application legal disclaimer page', () => { .prop('applicationRevision') ).toBe(query.application.applicationRevisionByStringVersionNumber); }); + + it('redirects to the 404 page if the application is missing', () => { + const wrapper = shallow( + + ); + + expect(wrapper).toBeEmpty(); + expect(router.push).toBeCalledWith('/404'); + }); + + it('redirects to the 404 page if the application revision by version number is missing', () => { + const wrapper = shallow( + + ); + + expect(wrapper).toBeEmpty(); + expect(router.push).toBeCalledWith('/404'); + }); + + it('redirects to the 404 page if the application latest draft revision missing', () => { + const wrapper = shallow( + + ); + + expect(wrapper).toBeEmpty(); + expect(router.push).toBeCalledWith('/404'); + }); }); diff --git a/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/view.test.tsx b/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/view.test.tsx index 9322ef253c..7a95356545 100644 --- a/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/view.test.tsx +++ b/app/tests/unit/pages/reporter/application/[applicationId]/version/[versionNumber]/view.test.tsx @@ -4,7 +4,7 @@ import ViewApplication from 'pages/reporter/application/[applicationId]/version/ import {viewApplicationQueryResponse} from 'viewApplicationQuery.graphql'; const getTestQuery = (options?) => { - return { + const data: viewApplicationQueryResponse['query'] = { ' $fragmentRefs': { ApplicationDetailsContainer_query: true }, @@ -45,12 +45,17 @@ const getTestQuery = (options?) => { } ] }, + applicationRevisionByStringVersionNumber: { + ' $fragmentRefs': { + ApplicationDetailsContainer_applicationRevision: true + } + }, ' $fragmentRefs': { - ReviseApplicationButtonContainer_application: true, - ApplicationDetailsContainer_application: true + ReviseApplicationButtonContainer_application: true } } }; + return data; }; const router: any = { @@ -64,12 +69,7 @@ const router: any = { describe('View submitted application page', () => { it('passes a query to the ApplicationDetailsComponent component', () => { const data = getTestQuery(); - const r = shallow( - - ); + const r = shallow(); expect( r.find('Relay(ApplicationDetailsComponent)').first().prop('query') ).toBe(data); @@ -80,24 +80,14 @@ describe('View submitted application page', () => { ...getTestQuery(), application: null }; - const r = shallow( - - ); + const r = shallow(); expect(r).toBeEmpty(); expect(router.push).toBeCalledWith('/404'); }); it('does not show an application decision when unreviewed', () => { const data = getTestQuery(); - const r = shallow( - - ); + const r = shallow(); expect(r.find('ApplicationDecision')).toBeEmpty(); expect(r).toMatchSnapshot(); }); @@ -105,12 +95,7 @@ describe('View submitted application page', () => { it('shows approval when reviewed and approved', () => { const decision = 'APPROVED'; const data = getTestQuery({applicationRevisionStatus: decision}); - const r = shallow( - - ); + const r = shallow(); expect(r.find('ApplicationDecision').first().prop('decision')).toBe( decision ); @@ -123,12 +108,7 @@ describe('View submitted application page', () => { it('shows rejection when reviewed and rejected', () => { const decision = 'REJECTED'; const data = getTestQuery({applicationRevisionStatus: decision}); - const r = shallow( - - ); + const r = shallow(); expect(r.find('ApplicationDecision').first().prop('decision')).toBe( decision ); @@ -147,12 +127,7 @@ describe('View submitted application page', () => { applicationRevisionStatus: decision, comment: comments[0] }); - const r = shallow( - - ); + const r = shallow(); expect(r.find('ApplicationDecision').first().prop('decision')).toBe( decision ); @@ -177,12 +152,7 @@ describe('View submitted application page', () => { applicationRevisionStatus: decision, comment: comments[0] }); - const r = shallow( - - ); + const r = shallow(); expect(r.find('ApplicationDecision').first().prop('decision')).toBe( decision ); @@ -209,12 +179,7 @@ describe('View submitted application page', () => { } } }; - const r = shallow( - - ); + const r = shallow(); expect(r.exists('Button')).toBe(true); expect(r.find('Button').text()).toBe('Resume latest draft'); expect(r).toMatchSnapshot(); @@ -234,12 +199,7 @@ describe('View submitted application page', () => { } } }; - const r = shallow( - - ); + const r = shallow(); expect(r).toMatchSnapshot(); expect(r.exists('Button')).toBe(true); expect(r.find('Button').text()).toBe('View most recent submission'); @@ -259,12 +219,7 @@ describe('View submitted application page', () => { } } }; - const r = shallow( - - ); + const r = shallow(); expect(r).toMatchSnapshot(); expect(r.exists('Button')).toBe(true); expect(r.find('Button').text()).toBe('View most recent submission');