From 668b3f5df9c29d12c6c8ce8c5de384fc9f1754e1 Mon Sep 17 00:00:00 2001 From: KristinAoki Date: Thu, 20 Mar 2025 12:25:07 -0400 Subject: [PATCH 1/4] feat: update include all of unit title components --- src/courseware/course/sequence/Unit/index.jsx | 16 +------ src/plugin-slots/UnitTitleSlot/index.jsx | 48 +++++++++++++++---- 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/courseware/course/sequence/Unit/index.jsx b/src/courseware/course/sequence/Unit/index.jsx index 660ccd6ed5..37eb396d88 100644 --- a/src/courseware/course/sequence/Unit/index.jsx +++ b/src/courseware/course/sequence/Unit/index.jsx @@ -8,7 +8,6 @@ import { useIntl } from '@edx/frontend-platform/i18n'; import { useModel } from '@src/generic/model-store'; import { usePluginsCallback } from '@src/generic/plugin-store'; -import BookmarkButton from '../../bookmark/BookmarkButton'; import messages from '../messages'; import ContentIFrame from './ContentIFrame'; import UnitSuspense from './UnitSuspense'; @@ -33,7 +32,6 @@ const Unit = ({ const examAccess = useExamAccess({ id }); const shouldDisplayHonorCode = useShouldDisplayHonorCode({ courseId, id }); const unit = useModel(modelKeys.units, id); - const isProcessing = unit.bookmarkedUpdateState === 'loading'; const view = authenticatedUser ? views.student : views.public; const shouldDisplayUnitPreview = pathname.startsWith('/preview') && isOriginalUserStaff; @@ -50,19 +48,7 @@ const Unit = ({ return (
-
-
-

{unit.title}

- -
- {isEnabledOutlineSidebar && renderUnitNavigation(true)} -
-

{formatMessage(messages.headerPlaceholder)}

- + ( - -); +import { BookmarkButton } from '@src/courseware/course/bookmark'; +import messages from '@src/courseware/course/sequence/messages'; + +const UnitTitleSlot = ({ + unitId, + unit, + isEnabledOutlineSidebar, + renderUnitNavigation, +}) => { + const { formatMessage } = useIntl(); + const isProcessing = unit.bookmarkedUpdateState === 'loading'; + + return ( + +
+
+

{unit.title}

+
+ {isEnabledOutlineSidebar && renderUnitNavigation(true)} +
+

{formatMessage(messages.headerPlaceholder)}

+ +
+ ); +}; UnitTitleSlot.propTypes = { courseId: PropTypes.string.isRequired, From 4c92aa4acefc8c4136d52651667aaf1ade819e44 Mon Sep 17 00:00:00 2001 From: KristinAoki Date: Thu, 20 Mar 2025 12:36:04 -0400 Subject: [PATCH 2/4] docs: update README --- src/plugin-slots/UnitTitleSlot/README.md | 17 +++++++++-------- .../UnitTitleSlot/images/post_unit_title.png | Bin 48624 -> 0 bytes .../UnitTitleSlot/images/screenshot_custom.png | Bin 0 -> 52907 bytes 3 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 src/plugin-slots/UnitTitleSlot/images/post_unit_title.png create mode 100644 src/plugin-slots/UnitTitleSlot/images/screenshot_custom.png diff --git a/src/plugin-slots/UnitTitleSlot/README.md b/src/plugin-slots/UnitTitleSlot/README.md index b6f1a137c9..6daf3b736d 100644 --- a/src/plugin-slots/UnitTitleSlot/README.md +++ b/src/plugin-slots/UnitTitleSlot/README.md @@ -2,19 +2,20 @@ ### Slot ID: `unit_title_slot` ### Props: -* `courseId` * `unitId` -* `unitTitle` +* `unit` +* `isEnabledOutlineSidebar` +* `renderUnitNavigation` ## Description -This slot is used for adding content after the Unit title. +This slot is used for adding content before or after the Unit title. ## Example -The following `env.config.jsx` will render the `course_id`, `unit_id` and `unitTitle` of the course as `

` elements. +The following `env.config.jsx` will render `unit_id` and `unitTitle` of the course as `

` elements. -![Screenshot of Content added after the Unit Title](./images/post_unit_title.png) +![Screenshot of Content added before and after the Unit Title](./images/screenshot_custom.png) ```js import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework'; @@ -29,11 +30,11 @@ const config = { widget: { id: 'custom_unit_title_content', type: DIRECT_PLUGIN, - RenderWidget: ({courseId, unitId, unitTitle}) => ( + RenderWidget: ({ unitId, unit, isEnabledOutlineSidebar, renderUnitNavigation }) => ( <> -

📚: {courseId}

+ {isEnabledOutlineSidebar && renderUnitNavigation(true)} +

📙: {unit.title}

📙: {unitId}

-

📙: {unitTitle}

), }, diff --git a/src/plugin-slots/UnitTitleSlot/images/post_unit_title.png b/src/plugin-slots/UnitTitleSlot/images/post_unit_title.png deleted file mode 100644 index b0adc94c204232ea1bd332553ee2ce16f8fbda14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48624 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 diff --git a/src/plugin-slots/UnitTitleSlot/images/screenshot_custom.png b/src/plugin-slots/UnitTitleSlot/images/screenshot_custom.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6794b2057a6858619c2575b3407b145e3bb2e9 GIT binary patch literal 52907 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 literal 0 HcmV?d00001 From 8ab9f0ba64705f001f0d51e82c8bf405db43057e Mon Sep 17 00:00:00 2001 From: KristinAoki Date: Thu, 20 Mar 2025 14:18:09 -0400 Subject: [PATCH 3/4] fix: lint errors --- src/plugin-slots/UnitTitleSlot/index.jsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/plugin-slots/UnitTitleSlot/index.jsx b/src/plugin-slots/UnitTitleSlot/index.jsx index b7900237c9..8f035eaf72 100644 --- a/src/plugin-slots/UnitTitleSlot/index.jsx +++ b/src/plugin-slots/UnitTitleSlot/index.jsx @@ -13,7 +13,7 @@ const UnitTitleSlot = ({ }) => { const { formatMessage } = useIntl(); const isProcessing = unit.bookmarkedUpdateState === 'loading'; - + return ( Date: Mon, 24 Mar 2025 10:47:20 -0400 Subject: [PATCH 4/4] fix: failing tests --- .../Unit/__snapshots__/index.test.jsx.snap | 65 ---- .../course/sequence/Unit/index.test.jsx | 283 ++++++------------ 2 files changed, 99 insertions(+), 249 deletions(-) delete mode 100644 src/courseware/course/sequence/Unit/__snapshots__/index.test.jsx.snap diff --git a/src/courseware/course/sequence/Unit/__snapshots__/index.test.jsx.snap b/src/courseware/course/sequence/Unit/__snapshots__/index.test.jsx.snap deleted file mode 100644 index c90f819697..0000000000 --- a/src/courseware/course/sequence/Unit/__snapshots__/index.test.jsx.snap +++ /dev/null @@ -1,65 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Unit component output BookmarkButton props bookmarked, bookmark update pending snapshot 1`] = ` - -`; - -exports[`Unit component output BookmarkButton props not bookmarked, bookmark update loading snapshot 1`] = ` - -`; - -exports[`Unit component output snapshot: not bookmarked, do not show content 1`] = ` -

-`; diff --git a/src/courseware/course/sequence/Unit/index.test.jsx b/src/courseware/course/sequence/Unit/index.test.jsx index 4f9a221640..db21d9c7b0 100644 --- a/src/courseware/course/sequence/Unit/index.test.jsx +++ b/src/courseware/course/sequence/Unit/index.test.jsx @@ -1,72 +1,22 @@ -import React from 'react'; -import { when } from 'jest-when'; -import { formatMessage, shallow } from '@edx/react-unit-test-utils/dist'; -import { useSearchParams, useLocation } from 'react-router-dom'; +import { MemoryRouter } from 'react-router'; +import { Factory } from 'rosie'; -import { useModel } from '@src/generic/model-store'; - -import BookmarkButton from '../../bookmark/BookmarkButton'; -import UnitSuspense from './UnitSuspense'; -import ContentIFrame from './ContentIFrame'; -import Unit from '.'; -import messages from '../messages'; +import { + initializeMockApp, initializeTestStore, render, screen, +} from '../../../../setupTest'; import { getIFrameUrl } from './urls'; -import { modelKeys, views } from './constants'; -import * as hooks from './hooks'; - -jest.mock('./hooks', () => ({ useUnitData: jest.fn() })); -jest.mock('react-router-dom'); - -jest.mock('@edx/frontend-platform/i18n', () => { - const utils = jest.requireActual('@edx/react-unit-test-utils/dist'); - return { - useIntl: () => ({ formatMessage: utils.formatMessage }), - defineMessages: m => m, - }; -}); - -jest.mock('@src/generic/PageLoading', () => 'PageLoading'); -jest.mock('../../bookmark/BookmarkButton', () => 'BookmarkButton'); -jest.mock('./ContentIFrame', () => 'ContentIFrame'); -jest.mock('./UnitSuspense', () => 'UnitSuspense'); -jest.mock('../honor-code', () => 'HonorCode'); -jest.mock('../lock-paywall', () => 'LockPaywall'); - -jest.mock('@src/generic/model-store', () => ({ - useModel: jest.fn(), -})); - -jest.mock('react', () => ({ - ...jest.requireActual('react'), - useContext: jest.fn(v => v), -})); - -jest.mock('./hooks', () => ({ - useExamAccess: jest.fn(), - useShouldDisplayHonorCode: jest.fn(), -})); - -jest.mock('./urls', () => ({ - getIFrameUrl: jest.fn(), -})); +import { views } from './constants'; +import Unit from '.'; -const props = { +const defaultProps = { courseId: 'test-course-id', format: 'test-format', onLoaded: jest.fn().mockName('props.onLoaded'), - id: 'test-props-id', - isStaff: false, -}; - -const context = { authenticatedUser: { test: 'user' } }; -React.useContext.mockReturnValue(context); - -const examAccess = { - accessToken: 'test-token', - blockAccess: false, + id: 'unit-id', + isOriginalUserStaff: false, + isEnabledOutlineSidebar: false, + renderUnitNavigation: jest.fn(enabled => enabled && 'UnitNaviagtion'), }; -hooks.useExamAccess.mockReturnValue(examAccess); -hooks.useShouldDisplayHonorCode.mockReturnValue(false); const unit = { id: 'unit-id', @@ -74,134 +24,99 @@ const unit = { bookmarked: false, bookmarkedUpdateState: 'pending', }; -const mockCoursewareMetaFn = jest.fn(() => ({ wholeCourseTranslationEnabled: false })); -const mockUnitsFn = jest.fn(() => unit); - -when(useModel) - .calledWith('courseHomeMeta', props.courseId) - .mockImplementation(mockCoursewareMetaFn) - .calledWith(modelKeys.units, props.id) - .mockImplementation(mockUnitsFn); - -let el; -describe('Unit component', () => { - const searchParams = { get: (prop) => prop }; - const setSearchParams = jest.fn(); - - beforeEach(() => { - useSearchParams.mockImplementation(() => [searchParams, setSearchParams]); - useLocation.mockImplementation(() => ({ pathname: `/course/${props.courseId}` })); - jest.clearAllMocks(); - el = shallow(); + +let store; + +const renderComponent = (props) => { + render( + + + , + { store, wrapWithRouter: false }, + ); +}; + +initializeMockApp(); + +async function setupStoreState() { + const courseMetadata = Factory.build('courseMetadata'); + const unitBlocks = [Factory.build( + 'block', + { type: 'vertical', ...unit }, + { courseId: courseMetadata.id }, + )]; + + store = await initializeTestStore({ courseMetadata, unitBlocks }); +} + +describe('', () => { + beforeEach(async () => { + await setupStoreState(); }); - describe('behavior', () => { - it('initializes hooks', () => { - expect(hooks.useShouldDisplayHonorCode).toHaveBeenCalledWith({ - courseId: props.courseId, - id: props.id, - }); + + describe('unit title', () => { + it('has two children', () => { + renderComponent(defaultProps); + const unitTitleWrapper = screen.getByTestId('unit_title_slot').children[0]; + + expect(unitTitleWrapper.children).toHaveLength(3); + }); + + it('renders bookmark button', () => { + renderComponent(defaultProps); + + expect(screen.getByText('Bookmark this page')).toBeInTheDocument(); + }); + + it('does not render unit navigation buttons', () => { + renderComponent(defaultProps); + + const nextButton = screen.queryByText('UnitNaviagtion'); + + expect(nextButton).toBeNull(); + }); + + it('renders unit navigation buttons when isEnabledOutlineSidebar is true', () => { + const props = { ...defaultProps, isEnabledOutlineSidebar: true }; + renderComponent(props); + + const nextButton = screen.getByText('UnitNaviagtion'); + + expect(nextButton).toBeVisible(); }); }); - describe('output', () => { - let component; - test('snapshot: not bookmarked, do not show content', () => { - el = shallow(); - expect(el.snapshot).toMatchSnapshot(); + + describe('UnitSuspense', () => { + it('renders loading message', () => { + renderComponent(defaultProps); + + expect(screen.getByText('Loading', { exact: false })).toBeInTheDocument(); }); - describe('BookmarkButton props', () => { - const renderComponent = () => { - el = shallow(); - [component] = el.instance.findByType(BookmarkButton); - }; - describe('not bookmarked, bookmark update loading', () => { - beforeEach(() => { - useModel.mockReturnValueOnce({ ...unit, bookmarkedUpdateState: 'loading' }); - renderComponent(); - }); - test('snapshot', () => { - expect(component.snapshot).toMatchSnapshot(); - }); - test('props', () => { - expect(component.props.isBookmarked).toEqual(false); - expect(component.props.isProcessing).toEqual(true); - expect(component.props.unitId).toEqual(unit.id); - }); - }); - describe('bookmarked, bookmark update pending', () => { - beforeEach(() => { - mockUnitsFn.mockReturnValueOnce({ ...unit, bookmarked: true }); - renderComponent(); - }); - test('snapshot', () => { - expect(component.snapshot).toMatchSnapshot(); - }); - test('props', () => { - expect(component.props.isBookmarked).toEqual(true); - expect(component.props.isProcessing).toEqual(false); - expect(component.props.unitId).toEqual(unit.id); - }); - }); + }); + + describe('ContentIFrame', () => { + let iframe; + beforeEach(() => { + renderComponent(defaultProps); + iframe = screen.getByTestId('content-iframe-test-id'); }); - test('UnitSuspense props', () => { - el = shallow(); - [component] = el.instance.findByType(UnitSuspense); - expect(component.props.courseId).toEqual(props.courseId); - expect(component.props.id).toEqual(props.id); + + it('renders content iframe', () => { + expect(iframe).toBeVisible(); }); - describe('ContentIFrame props', () => { - const testComponentProps = () => { - expect(component.props.elementId).toEqual('unit-iframe'); - expect(component.props.id).toEqual(props.id); - expect(component.props.loadingMessage).toEqual(formatMessage(messages.loadingSequence)); - expect(component.props.onLoaded).toEqual(props.onLoaded); - expect(component.props.title).toEqual(unit.title); - }; - const loadComponent = () => { - el = shallow(); - [component] = el.instance.findByType(ContentIFrame); - }; - describe('shouldShowContent', () => { - test('do not show content if displaying honor code', () => { - hooks.useShouldDisplayHonorCode.mockReturnValueOnce(true); - loadComponent(); - testComponentProps(); - expect(component.props.shouldShowContent).toEqual(false); - }); - test('do not show content if examAccess is blocked', () => { - hooks.useExamAccess.mockReturnValueOnce({ ...examAccess, blockAccess: true }); - loadComponent(); - testComponentProps(); - expect(component.props.shouldShowContent).toEqual(false); - }); - test('show content if not displaying honor code or blocked by exam access', () => { - loadComponent(); - testComponentProps(); - expect(component.props.shouldShowContent).toEqual(true); - }); - }); - describe('iframeUrl', () => { - test('loads iframe url with student view if authenticated user', () => { - loadComponent(); - testComponentProps(); - expect(component.props.iframeUrl).toEqual(getIFrameUrl({ - id: props.id, - view: views.student, - format: props.format, - examAccess, - })); - }); - test('loads iframe url with public view if no authenticated user', () => { - React.useContext.mockReturnValueOnce({}); - loadComponent(); - testComponentProps(); - expect(component.props.iframeUrl).toEqual(getIFrameUrl({ - id: props.id, - view: views.public, - format: props.format, - examAccess, - })); - }); - }); + + it('generates correct iframeUrl', () => { + expect(iframe.getAttribute('src')).toEqual(getIFrameUrl({ + id: defaultProps.id, + view: views.student, + format: defaultProps.format, + examAccess: { + accessToken: '', + blockAccess: false, + }, + jumpToId: null, + preview: 0, + })); }); }); });