feat: Add taxonomies tab in home page (#923)

This commit is contained in:
Yusuf Musleh
2024-04-04 15:04:13 +03:00
committed by GitHub
parent fde3872e2e
commit 806591f1cc
3 changed files with 33 additions and 0 deletions

View File

@@ -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 />);

View File

@@ -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);
};

View File

@@ -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;