From e82c2de1b38d94e9bf33a09cbb072acaad5eb631 Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Tue, 7 May 2024 20:13:17 -0700 Subject: [PATCH] test: increase test coverage --- src/generic/data/apiHooks.js | 4 ++++ .../taxonomy-detail/TaxonomyDetailPage.test.jsx | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/generic/data/apiHooks.js b/src/generic/data/apiHooks.js index d58639a467..e601d70b46 100644 --- a/src/generic/data/apiHooks.js +++ b/src/generic/data/apiHooks.js @@ -46,6 +46,10 @@ export const useStudioHomeData = () => useQuery({ /** * Are the tagging/taxonomy features enabled? + * + * TODO: This is temporary, for the Open edX Redwood release. Sometime post-Redwood pre-Sumac (and after being enabled + * for a while on edx.org), this should be removed and the tagging/taxonomy functionality always enabled. + * * @returns {boolean} Whether they are enabled (default true) */ export const useTaggingFeaturesEnabled = () => { diff --git a/src/taxonomy/taxonomy-detail/TaxonomyDetailPage.test.jsx b/src/taxonomy/taxonomy-detail/TaxonomyDetailPage.test.jsx index 49df3d8a7e..cf43316483 100644 --- a/src/taxonomy/taxonomy-detail/TaxonomyDetailPage.test.jsx +++ b/src/taxonomy/taxonomy-detail/TaxonomyDetailPage.test.jsx @@ -13,6 +13,7 @@ import TaxonomyDetailPage from './TaxonomyDetailPage'; let store; const mockNavigate = jest.fn(); const mockMutate = jest.fn(); +const mockTaggingFeaturesEnabled = jest.fn(); let axiosMock; jest.mock('react-router-dom', () => ({ @@ -21,11 +22,16 @@ jest.mock('react-router-dom', () => ({ taxonomyId: '1', }), useNavigate: () => mockNavigate, + Navigate: jest.fn(({ to }) => `[Navigate: Redirected to ${to}]`), })); jest.mock('../data/apiHooks', () => ({ ...jest.requireActual('../data/apiHooks'), useDeleteTaxonomy: () => mockMutate, })); +jest.mock('../../generic/data/apiHooks', () => ({ + ...jest.requireActual('../../generic/data/apiHooks'), + useTaggingFeaturesEnabled: () => mockTaggingFeaturesEnabled(), +})); jest.mock('./TaxonomyDetailSideCard', () => jest.fn(() => <>Mock TaxonomyDetailSideCard)); jest.mock('../tag-list/TagListTable', () => jest.fn(() => <>Mock TagListTable)); @@ -54,6 +60,7 @@ describe('', () => { }); store = initializeStore(); axiosMock = new MockAdapter(getAuthenticatedHttpClient()); + mockTaggingFeaturesEnabled.mockReturnValue(true); }); afterEach(() => { @@ -62,6 +69,12 @@ describe('', () => { queryClient.clear(); }); + it('redirects to Studio home if the tagging feature is disabled', () => { + mockTaggingFeaturesEnabled.mockReturnValue(false); + const doc = render(); + expect(doc.asFragment().textContent).toEqual('[Navigate: Redirected to /home]'); + }); + it('shows the spinner before the query is complete', () => { // Use unresolved promise to keep the Loading visible axiosMock.onGet(apiUrls.taxonomy(1)).reply(() => new Promise());