From 1bfc8c92ff34f3e0257aadfbac3a940f705111bf Mon Sep 17 00:00:00 2001 From: Shreyas Devalapurkar Date: Fri, 8 Oct 2021 14:45:15 -0700 Subject: [PATCH] =?UTF-8?q?Tests=20=F0=9F=90=B6=20=20(#578)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fe tests --- app/src/hooks/api/useObservationApi.test.ts | 48 ++++++++++ app/src/hooks/api/useObservationApi.ts | 8 +- app/src/hooks/api/useProjectApi.test.ts | 34 +++++++ app/src/hooks/api/useSearchApi.test.ts | 31 ++++++- app/src/hooks/api/useSurveyApi.test.ts | 91 +++++++++++++++++++ .../PublicProjectAttachments.test.tsx | 4 + 6 files changed, 213 insertions(+), 3 deletions(-) diff --git a/app/src/hooks/api/useObservationApi.test.ts b/app/src/hooks/api/useObservationApi.test.ts index 947ff6e19a..549cacd97a 100644 --- a/app/src/hooks/api/useObservationApi.test.ts +++ b/app/src/hooks/api/useObservationApi.test.ts @@ -91,6 +91,33 @@ describe('useObservationApi', () => { expect(result).toEqual({}); }); + it('initiateXLSXSubmissionTransform works as expected', async () => { + const submissionId = 2; + mock.onPost(`/api/xlsx/transform`).reply(200, true); + + const result = await useObservationApi(axios).initiateXLSXSubmissionTransform(submissionId); + + expect(result).toEqual(true); + }); + + it('initiateXLSXSubmissionValidation works as expected', async () => { + const submissionId = 2; + mock.onPost(`/api/xlsx/validate`).reply(200, true); + + const result = await useObservationApi(axios).initiateXLSXSubmissionValidation(submissionId); + + expect(result).toEqual(true); + }); + + it('initiateDwCSubmissionValidation works as expected', async () => { + const submissionId = 2; + mock.onPost(`/api/dwc/validate`).reply(200, true); + + const result = await useObservationApi(axios).initiateDwCSubmissionValidation(submissionId); + + expect(result).toEqual(true); + }); + it('getSubmissionCSVForView works as expected', async () => { const submissionId = 2; const data = [ @@ -112,4 +139,25 @@ describe('useObservationApi', () => { expect(result.data[0].name).toEqual('name 1'); }); + + it('getOccurrencesForView works as expected', async () => { + const submissionId = 2; + const data = { + geometry: null, + taxonId: 'taxon123', + lifeStage: 'yearling', + vernacularName: 'vname', + individualCount: 23, + organismQuantity: 23, + organismQuantityType: 'Individual', + occurrenceId: 2, + eventDate: '2020/04/04' + }; + + mock.onPost(`/api/dwc/view-occurrences`).reply(200, data); + + const result = await useObservationApi(axios).getOccurrencesForView(submissionId); + + expect(result).toEqual(data); + }); }); diff --git a/app/src/hooks/api/useObservationApi.ts b/app/src/hooks/api/useObservationApi.ts index 2492c15cbb..6274eb7a7d 100644 --- a/app/src/hooks/api/useObservationApi.ts +++ b/app/src/hooks/api/useObservationApi.ts @@ -122,9 +122,11 @@ const useObservationApi = (axios: AxiosInstance) => { * @param {number} submissionId */ const initiateDwCSubmissionValidation = async (submissionId: number) => { - axios.post(`/api/dwc/validate`, { + const { data } = await axios.post(`/api/dwc/validate`, { occurrence_submission_id: submissionId }); + + return data; }; /** @@ -132,9 +134,11 @@ const useObservationApi = (axios: AxiosInstance) => { * @param {number} submissionId */ const initiateXLSXSubmissionValidation = async (submissionId: number) => { - axios.post(`/api/xlsx/validate`, { + const { data } = await axios.post(`/api/xlsx/validate`, { occurrence_submission_id: submissionId }); + + return data; }; /** diff --git a/app/src/hooks/api/useProjectApi.test.ts b/app/src/hooks/api/useProjectApi.test.ts index 7e128cefb4..55121fa482 100644 --- a/app/src/hooks/api/useProjectApi.test.ts +++ b/app/src/hooks/api/useProjectApi.test.ts @@ -260,4 +260,38 @@ describe('useProjectApi', () => { expect(result).toEqual({ id: 1 }); }); + + it('getAttachmentSignedURL works as expected', async () => { + mock + .onPost(`/api/public/project/${projectId}/attachments/${attachmentId}/getSignedUrl`) + .reply(200, 'www.signedurl.com'); + + const result = await usePublicProjectApi(axios).getAttachmentSignedURL(projectId, attachmentId, 'Image'); + + expect(result).toEqual('www.signedurl.com'); + }); + + it('getProjectAttachments works as expected', async () => { + mock.onGet(`/api/public/project/${projectId}/attachments/list`).reply(200, { + attachmentsList: [ + { + id: 1, + fileName: 'filename', + lastModified: '2020/04/04', + size: 3028 + } + ] + }); + + const result = await usePublicProjectApi(axios).getProjectAttachments(projectId); + + expect(result.attachmentsList).toEqual([ + { + id: 1, + fileName: 'filename', + lastModified: '2020/04/04', + size: 3028 + } + ]); + }); }); diff --git a/app/src/hooks/api/useSearchApi.test.ts b/app/src/hooks/api/useSearchApi.test.ts index 55c3c4be1e..7d8d176fdd 100644 --- a/app/src/hooks/api/useSearchApi.test.ts +++ b/app/src/hooks/api/useSearchApi.test.ts @@ -1,6 +1,6 @@ import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; -import useSearchApi from './useSearchApi'; +import useSearchApi, { usePublicSearchApi } from './useSearchApi'; describe('useSearchApi', () => { let mock: any; @@ -30,3 +30,32 @@ describe('useSearchApi', () => { expect(result[0].id).toEqual('1'); }); }); + +describe('usePublicSearchApi', () => { + let mock: any; + + beforeEach(() => { + mock = new MockAdapter(axios); + }); + + afterEach(() => { + mock.restore(); + }); + + it('getSearchResults works as expected', async () => { + const res = [ + { + id: '1', + name: 'name', + objectives: 'objectives', + geometry: [] + } + ]; + + mock.onGet('api/public/search').reply(200, res); + + const result = await usePublicSearchApi(axios).getSearchResults(); + + expect(result[0].id).toEqual('1'); + }); +}); diff --git a/app/src/hooks/api/useSurveyApi.test.ts b/app/src/hooks/api/useSurveyApi.test.ts index 8c268ec4b7..03a1b04037 100644 --- a/app/src/hooks/api/useSurveyApi.test.ts +++ b/app/src/hooks/api/useSurveyApi.test.ts @@ -168,6 +168,18 @@ describe('useSurveyApi', () => { expect(result).toEqual('result 1'); }); + it('uploadSurveySummaryResults works as expected', async () => { + const file = new File(['foo'], 'foo.txt', { + type: 'text/plain' + }); + + mock.onPost(`/api/project/${projectId}/survey/${surveyId}/summary/submission/upload`).reply(200, 'result 1'); + + const result = await useSurveyApi(axios).uploadSurveySummaryResults(projectId, surveyId, file); + + expect(result).toEqual('result 1'); + }); + it('updateSurvey works as expected', async () => { const request = { survey_details: { @@ -196,6 +208,39 @@ describe('useSurveyApi', () => { expect(result).toEqual(true); }); + it('getSurveySummarySubmission works as expected', async () => { + mock.onGet(`/api/project/${projectId}/survey/${surveyId}/summary/submission/get`).reply(200, { + id: 1, + fileName: 'name' + }); + + const result = await useSurveyApi(axios).getSurveySummarySubmission(projectId, surveyId); + + expect(result).toEqual({ + id: 1, + fileName: 'name' + }); + }); + + it('getSubmissionCSVForView works as expected', async () => { + const summaryId = 2; + const resultData = { + data: { + name: 'name', + headers: [], + rows: [[]] + } + }; + + mock + .onGet(`/api/project/${projectId}/survey/${surveyId}/summary/submission/${summaryId}/view`) + .reply(200, resultData); + + const result = await useSurveyApi(axios).getSubmissionCSVForView(projectId, surveyId, summaryId); + + expect(result).toEqual(resultData); + }); + it('getSurveyForUpdate works as expected', async () => { const data = { survey_details: { @@ -231,4 +276,50 @@ describe('useSurveyApi', () => { expect(result).toEqual('OK'); }); + + it('deleteSummarySubmission works as expected', async () => { + const summaryId = 2; + + mock.onDelete(`/api/project/${projectId}/survey/${surveyId}/summary/submission/${summaryId}/delete`).reply(200, 1); + + const result = await useSurveyApi(axios).deleteSummarySubmission(projectId, surveyId, summaryId); + + expect(result).toEqual(1); + }); + + it('getSummarySubmissionSignedURL works as expected', async () => { + const summaryId = 2; + + mock + .onGet(`/api/project/${projectId}/survey/${surveyId}/summary/submission/${summaryId}/getSignedUrl`) + .reply(200, 'url.com'); + + const result = await useSurveyApi(axios).getSummarySubmissionSignedURL(projectId, surveyId, summaryId); + + expect(result).toEqual('url.com'); + }); + + it('makeAttachmentUnsecure works as expected', async () => { + mock + .onPut(`/api/project/${projectId}/survey/${surveyId}/attachments/${attachmentId}/makeUnsecure`) + .reply(200, true); + + const result = await useSurveyApi(axios).makeAttachmentUnsecure( + projectId, + surveyId, + attachmentId, + 'token', + 'Image' + ); + + expect(result).toEqual(true); + }); + + it('makeAttachmentSecure works as expected', async () => { + mock.onPut(`/api/project/${projectId}/survey/${surveyId}/attachments/${attachmentId}/makeSecure`).reply(200, true); + + const result = await useSurveyApi(axios).makeAttachmentSecure(projectId, surveyId, attachmentId, 'Image'); + + expect(result).toEqual(true); + }); }); diff --git a/app/src/pages/public/components/PublicProjectAttachments.test.tsx b/app/src/pages/public/components/PublicProjectAttachments.test.tsx index 5393f00887..50df24ab4a 100644 --- a/app/src/pages/public/components/PublicProjectAttachments.test.tsx +++ b/app/src/pages/public/components/PublicProjectAttachments.test.tsx @@ -31,6 +31,10 @@ describe('PublicProjectAttachments', () => { }); it('renders correctly with no attachments', () => { + mockBiohubApi().public.project.getProjectAttachments.mockResolvedValue({ + attachmentsList: [] + }); + const { getByText } = render(