fix: lint errors

This commit is contained in:
KristinAoki
2025-03-26 16:43:58 -04:00
committed by Feanil Patel
parent 5b7f76b43d
commit b827db800d
4 changed files with 20 additions and 111 deletions

View File

@@ -4,6 +4,7 @@ import {
useToggle,
ModalPopup,
Menu,
Button,
} from '@openedx/paragon';
import { Link, useLocation } from 'react-router-dom';
import JumpNavMenuItem from '../JumpNavMenuItem';
@@ -33,7 +34,7 @@ const BreadcrumbItem: React.FC<Props> = ({
sequenceId,
unitId,
isStaff,
}) => {
}) => {
const defaultContent = content.filter(
(destination: { default: boolean }) => destination.default,
)[0] || { id: courseId, label: '', sequences: [] };
@@ -73,9 +74,9 @@ const BreadcrumbItem: React.FC<Props> = ({
<>
{
// @ts-ignore
<a className="text-primary-500" variant="link" onClick={open} ref={setTarget}>
<Button className="text-primary-500 m-0 p-0" variant="link" onClick={open} ref={setTarget}>
{defaultContent.label}
</a>
</Button>
}
<ModalPopup positionRef={target} isOpen={isOpen} onClose={close}>
<Menu>
@@ -100,4 +101,4 @@ const BreadcrumbItem: React.FC<Props> = ({
);
};
export default BreadcrumbItem;
export default BreadcrumbItem;

View File

@@ -1,10 +1,11 @@
import React, { useMemo } from 'react';
import PropTypes from 'prop-types';
import { useSelector } from 'react-redux';
import { Link } from 'react-router-dom';
import { FormattedMessage } from '@edx/frontend-platform/i18n';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faHome } from '@fortawesome/free-solid-svg-icons';
import { useSelector } from 'react-redux';
import { Link } from 'react-router-dom';
import { useModel, useModels } from '../../../generic/model-store';
import BreadcrumbItem from './BreadcrumbItem';
@@ -15,13 +16,11 @@ const CourseBreadcrumbs = ({
unitId,
isStaff,
}) => {
const course = useModel('coursewareMeta', courseId);
const course = useModel('coursewareMeta', courseId);
const courseStatus = useSelector((state) => state.courseware.courseStatus);
const sequenceStatus = useSelector(
(state) => state.courseware.sequenceStatus,
);
console.log( useModels('sections', course.sectionIds));
const allSequencesInSections = Object.fromEntries(
useModels('sections', course.sectionIds)?.map((section) => [
@@ -59,8 +58,6 @@ const CourseBreadcrumbs = ({
}
return [chapters, sequentials];
}, [courseStatus, sequenceStatus, allSequencesInSections]);
console.log(links);
return (
<nav aria-label="breadcrumb" className="d-inline-block col-sm-10 mb-3">

View File

@@ -3,97 +3,16 @@ import { AppProvider } from '@edx/frontend-platform/react';
import { render, screen } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
import { IntlProvider } from '@edx/frontend-platform/i18n';
import { initializeMockApp, initializeTestStore } from '@src/setupTest';
import CourseBreadcrumbs from './CourseBreadcrumbs';
// import { useModel, useModels } from '../../../generic/model-store';
// jest.mock('@edx/frontend-platform');
// jest.mock('@edx/frontend-platform/analytics');
// // Remove When Fully rolled out>>>
// jest.mock('../../../generic/model-store');
// jest.mock('@edx/frontend-platform/auth');
// getConfig.mockImplementation(() => ({ ENABLE_JUMPNAV: 'true' }));
// getAuthenticatedUser.mockImplementation(() => ({ administrator: true }));
// // ^^^^Remove When Fully rolled out
// jest.mock('react-redux', () => ({
// connect: (mapStateToProps, mapDispatchToProps) => (ReactComponent) => ({
// mapStateToProps,
// mapDispatchToProps,
// ReactComponent,
// }),
// Provider: ({ children }) => children,
// useSelector: () => 'loaded',
// }));
// jest.mock('react-router-dom', () => ({
// ...jest.requireActual('react-router-dom'),
// Link: jest.fn().mockImplementation(({ to, children }) => (
// <a href={to}>{children}</a>
// )),
// }));
// useModels.mockImplementation((name) => {
// if (name === 'sections') {
// return [
// {
// courseId: 'course-v1:edX+DemoX+Demo_Course',
// id: 'block-v1:edX+DemoX+Demo_Course+type@chapter+block@d8a6192ade314473a78242dfeedfbf5b',
// sequenceIds: ['block-v1:edX+DemoX+Demo_Course+type@sequential+block@edx_introduction'],
// title: 'Introduction',
// },
// {
// courseId: 'course-v1:edX+DemoX+Demo_Course',
// id: 'block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations',
// sequenceIds: ['block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5',
// 'block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions'],
// title: 'Example Week 1: Getting Started',
// },
// ];
// }
// return [
// {
// id: 'block-v1:edX+DemoX+Demo_Course+type@sequential+block@19a30717eff543078a5d94ae9d6c18a5',
// sectionId: 'block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations',
// title: 'Lesson 1 - Getting Started',
// unitIds: [
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@867dddb6f55d410caaa9c1eb9c6743ec',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@4f6c1b4e316a419ab5b6bf30e6c708e9',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@3dc16db8d14842e38324e95d4030b8a0',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@4a1bba2a403f40bca5ec245e945b0d76',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@256f17a44983429fb1a60802203ee4e0',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@e3601c0abee6427d8c17e6d6f8fdddd1',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@134df56c516a4a0dbb24dd5facef746e',
// ],
// },
// {
// id: 'block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions',
// sectionId: 'block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations',
// title: 'Homework - Question Styles',
// unitIds: [
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@2152d4a4aadc4cb0af5256394a3d1fc7',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@47dbd5f836544e61877a483c0b75606c',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@54bb9b142c6c4c22afc62bcb628f0e68',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_0c92347a5c00',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@vertical_1fef54c2b23b',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@2889db1677a549abb15eb4d886f95d1c',
// 'block-v1:edX+DemoX+Demo_Course+type@vertical+block@e8a5cc2aed424838853defab7be45e42',
// ],
// },
// ];
// });
// useModel.mockImplementation(() => ({
// sectionIds: ['block-v1:edX+DemoX+Demo_Course+type@chapter+block@d8a6192ade314473a78242dfeedfbf5b',
// 'block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations'],
// }));
const props = {
courseId: "course-v1:edX+DemoX+Demo_Course",
sectionId: "block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations",
sequenceId: "block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions",
courseId: 'course-v1:edX+DemoX+Demo_Course',
sectionId: 'block-v1:edX+DemoX+Demo_Course+type@chapter+block@interactive_demonstrations',
sequenceId: 'block-v1:edX+DemoX+Demo_Course+type@sequential+block@basic_questions',
isStaff: true,
}
};
const courseMetadata = Factory.build('courseMetadata', { courseId: props.courseId, sectionIds: [props.sectionId] });
const sequenceBlocks = [Factory.build(
@@ -103,10 +22,11 @@ const sequenceBlocks = [Factory.build(
)];
const sectionBlocks = [Factory.build(
'block',
{ type: 'chapter',
{
type: 'chapter',
id: props.sectionId,
title: 'Section',
children: [{ id: props.sequenceId}],
children: [{ id: props.sequenceId }],
},
{ courseId: props.courseId },
)];
@@ -115,21 +35,12 @@ initializeMockApp();
describe('CourseBreadcrumbs', () => {
let store = {};
let unit;
let sequenceId;
const initTestStore = async () => {
const courseBlocks = { sectionBlocks, sequenceBlocks };
console.log(courseBlocks);
store = await initializeTestStore({ courseMetadata, ...courseBlocks });
const state = store.getState();
[sequenceId] = Object.keys(state.courseware.courseOutline.sequences);
const sequence = state.courseware.courseOutline.sequences[sequenceId];
unit = state.courseware.courseOutline.units[sequence.unitIds[0]];
store = await initializeTestStore({ courseMetadata, sectionBlocks, sequenceBlocks });
};
function renderWithProvider (pathname = '/course') {
function renderWithProvider(pathname = '/course') {
const { container } = render(
<AppProvider store={store} wrapWithRouter={false}>
<IntlProvider locale="en">

View File

@@ -1,3 +1,3 @@
import CourseBreadcrumbs from './CourseBreadcrumbs';
export default CourseBreadcrumbs;
export default CourseBreadcrumbs;