feat: Add taxonomies tab in home page (#923)
This commit is contained in:
@@ -157,6 +157,21 @@ describe('<TabsSection />', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('taxonomies tab', () => {
|
||||
it('should redirect to taxonomies page', async () => {
|
||||
render(<RootWrapper />);
|
||||
axiosMock.onGet(getStudioHomeApiUrl()).reply(200, generateGetStudioHomeDataApiResponse());
|
||||
await executeThunk(fetchStudioHomeData(), store.dispatch);
|
||||
|
||||
const taxonomiesTab = screen.getByText(tabMessages.taxonomiesTabTitle.defaultMessage);
|
||||
fireEvent.click(taxonomiesTab);
|
||||
|
||||
waitFor(() => {
|
||||
expect(window.location.href).toContain('/taxonomies');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('archived tab', () => {
|
||||
it('should switch to Archived tab and render specific archived course details', async () => {
|
||||
render(<RootWrapper />);
|
||||
|
||||
@@ -3,6 +3,7 @@ import { useSelector } from 'react-redux';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Tab, Tabs } from '@openedx/paragon';
|
||||
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
|
||||
import { getLoadingStatuses, getStudioHomeData } from '../data/selectors';
|
||||
import messages from './messages';
|
||||
@@ -20,10 +21,12 @@ const TabsSection = ({
|
||||
dispatch,
|
||||
isPaginationCoursesEnabled,
|
||||
}) => {
|
||||
const navigate = useNavigate();
|
||||
const TABS_LIST = {
|
||||
courses: 'courses',
|
||||
libraries: 'libraries',
|
||||
archived: 'archived',
|
||||
taxonomies: 'taxonomies',
|
||||
};
|
||||
const [tabKey, setTabKey] = useState(TABS_LIST.courses);
|
||||
const {
|
||||
@@ -100,6 +103,14 @@ const TabsSection = ({
|
||||
);
|
||||
}
|
||||
|
||||
tabs.push(
|
||||
<Tab
|
||||
key={TABS_LIST.taxonomies}
|
||||
eventKey={TABS_LIST.taxonomies}
|
||||
title={intl.formatMessage(messages.taxonomiesTabTitle)}
|
||||
/>,
|
||||
);
|
||||
|
||||
return tabs;
|
||||
}, [archivedCourses, librariesEnabled, showNewCourseContainer, isLoadingCourses, isLoadingLibraries]);
|
||||
|
||||
@@ -108,6 +119,8 @@ const TabsSection = ({
|
||||
window.location.assign(libraryAuthoringMfeUrl);
|
||||
} else if (tab === TABS_LIST.libraries && !redirectToLibraryAuthoringMfe) {
|
||||
dispatch(fetchLibraryData());
|
||||
} else if (tab === TABS_LIST.taxonomies) {
|
||||
navigate('/taxonomies');
|
||||
}
|
||||
setTabKey(tab);
|
||||
};
|
||||
|
||||
@@ -29,6 +29,11 @@ const messages = defineMessages({
|
||||
id: 'course-authoring.studio-home.archived.tab.error.message',
|
||||
defaultMessage: 'Failed to fetch archived courses. Please try again later.',
|
||||
},
|
||||
taxonomiesTabTitle: {
|
||||
id: 'course-authoring.studio-home.taxonomies.tab.title',
|
||||
defaultMessage: 'Taxonomies',
|
||||
description: 'Title of Taxonomies tab on the home page',
|
||||
},
|
||||
});
|
||||
|
||||
export default messages;
|
||||
|
||||
Reference in New Issue
Block a user