From cf4bea3604c64517e26c139981258fe9626e2907 Mon Sep 17 00:00:00 2001 From: KristinAoki Date: Wed, 26 Mar 2025 13:47:58 -0400 Subject: [PATCH] fix: unit link in preview mode --- .../components/SidebarUnit.test.jsx | 34 +++++++++++++++++-- .../components/UnitLinkWrapper.tsx | 8 +++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/courseware/course/sidebar/sidebars/course-outline/components/SidebarUnit.test.jsx b/src/courseware/course/sidebar/sidebars/course-outline/components/SidebarUnit.test.jsx index c2ab814b..64cf719f 100644 --- a/src/courseware/course/sidebar/sidebars/course-outline/components/SidebarUnit.test.jsx +++ b/src/courseware/course/sidebar/sidebars/course-outline/components/SidebarUnit.test.jsx @@ -36,12 +36,12 @@ describe('', () => { }; }; - function renderWithProvider(props = {}, sidebarContext = defaultSidebarContext) { + function renderWithProvider(props = {}, sidebarContext = defaultSidebarContext, pathname = '/course') { const { container } = render( - + ', () => { expect(window.sessionStorage.getItem('hideCourseOutlineSidebar')).toEqual('true'); }); }); + + describe('UnitLinkWrapper', () => { + describe('course in preview mode', () => { + beforeEach(async () => { + await initTestStore(); + renderWithProvider({ unit: { ...unit } }, { ...defaultSidebarContext, shouldDisplayFullScreen: true }, '/preview/course'); + }); + + it('href includes /preview', async () => { + const unitLink = screen.getByText(unit.title).closest('a'); + const linkHref = unitLink.getAttribute('href'); + + expect(linkHref.includes('/preview/')).toBeTruthy(); + }); + }); + + describe('course in live mode', () => { + beforeEach(async () => { + await initTestStore(); + renderWithProvider({ unit: { ...unit } }, { ...defaultSidebarContext, shouldDisplayFullScreen: true }); + }); + + it('href does not include /preview/', async () => { + const unitLink = screen.getByText(unit.title).closest('a'); + const linkHref = unitLink.getAttribute('href'); + + expect(linkHref.includes('/preview/')).toBeFalsy(); + }); + }); + }); }); diff --git a/src/courseware/course/sidebar/sidebars/course-outline/components/UnitLinkWrapper.tsx b/src/courseware/course/sidebar/sidebars/course-outline/components/UnitLinkWrapper.tsx index 26ba67ac..771eb5f7 100644 --- a/src/courseware/course/sidebar/sidebars/course-outline/components/UnitLinkWrapper.tsx +++ b/src/courseware/course/sidebar/sidebars/course-outline/components/UnitLinkWrapper.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Link } from 'react-router-dom'; +import { Link, useLocation } from 'react-router-dom'; import { useCourseOutlineSidebar } from '../hooks'; @@ -27,10 +27,14 @@ const UnitLinkWrapper: React.FC = ({ children, }) => { const { handleUnitClick } = useCourseOutlineSidebar(); + const { pathname } = useLocation(); + const isPreview = pathname.startsWith('/preview'); + const baseUrl = `/course/${courseId}/${sequenceId}/${id}`; + const link = isPreview ? `/preview${baseUrl}` : baseUrl; return ( handleUnitClick({ sequenceId, activeUnitId, id })} >