Skip to content

Commit e82c2de

Browse files
test: increase test coverage
1 parent 29daee5 commit e82c2de

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/generic/data/apiHooks.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ export const useStudioHomeData = () => useQuery({
4646

4747
/**
4848
* Are the tagging/taxonomy features enabled?
49+
*
50+
* TODO: This is temporary, for the Open edX Redwood release. Sometime post-Redwood pre-Sumac (and after being enabled
51+
* for a while on edx.org), this should be removed and the tagging/taxonomy functionality always enabled.
52+
*
4953
* @returns {boolean} Whether they are enabled (default true)
5054
*/
5155
export const useTaggingFeaturesEnabled = () => {

src/taxonomy/taxonomy-detail/TaxonomyDetailPage.test.jsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import TaxonomyDetailPage from './TaxonomyDetailPage';
1313
let store;
1414
const mockNavigate = jest.fn();
1515
const mockMutate = jest.fn();
16+
const mockTaggingFeaturesEnabled = jest.fn();
1617
let axiosMock;
1718

1819
jest.mock('react-router-dom', () => ({
@@ -21,11 +22,16 @@ jest.mock('react-router-dom', () => ({
2122
taxonomyId: '1',
2223
}),
2324
useNavigate: () => mockNavigate,
25+
Navigate: jest.fn(({ to }) => `[Navigate: Redirected to ${to}]`),
2426
}));
2527
jest.mock('../data/apiHooks', () => ({
2628
...jest.requireActual('../data/apiHooks'),
2729
useDeleteTaxonomy: () => mockMutate,
2830
}));
31+
jest.mock('../../generic/data/apiHooks', () => ({
32+
...jest.requireActual('../../generic/data/apiHooks'),
33+
useTaggingFeaturesEnabled: () => mockTaggingFeaturesEnabled(),
34+
}));
2935

3036
jest.mock('./TaxonomyDetailSideCard', () => jest.fn(() => <>Mock TaxonomyDetailSideCard</>));
3137
jest.mock('../tag-list/TagListTable', () => jest.fn(() => <>Mock TagListTable</>));
@@ -54,6 +60,7 @@ describe('<TaxonomyDetailPage />', () => {
5460
});
5561
store = initializeStore();
5662
axiosMock = new MockAdapter(getAuthenticatedHttpClient());
63+
mockTaggingFeaturesEnabled.mockReturnValue(true);
5764
});
5865

5966
afterEach(() => {
@@ -62,6 +69,12 @@ describe('<TaxonomyDetailPage />', () => {
6269
queryClient.clear();
6370
});
6471

72+
it('redirects to Studio home if the tagging feature is disabled', () => {
73+
mockTaggingFeaturesEnabled.mockReturnValue(false);
74+
const doc = render(<RootWrapper />);
75+
expect(doc.asFragment().textContent).toEqual('[Navigate: Redirected to /home]');
76+
});
77+
6578
it('shows the spinner before the query is complete', () => {
6679
// Use unresolved promise to keep the Loading visible
6780
axiosMock.onGet(apiUrls.taxonomy(1)).reply(() => new Promise());

0 commit comments

Comments
 (0)