From 992ab4887b94c33f7a8d00a2ab6f9f76e7a314c8 Mon Sep 17 00:00:00 2001 From: Varsha Menon <46579265+varshamenon4@users.noreply.github.com> Date: Tue, 20 Feb 2024 14:37:57 -0500 Subject: [PATCH] feat: show chat for desktop only (#1286) --- src/courseware/course/Course.jsx | 7 ++++- src/courseware/course/Course.test.jsx | 45 +++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/courseware/course/Course.jsx b/src/courseware/course/Course.jsx index abacc8ba..5a2f403b 100644 --- a/src/courseware/course/Course.jsx +++ b/src/courseware/course/Course.jsx @@ -54,6 +54,7 @@ const Course = ({ celebrations && !celebrations.streakLengthToCelebrate && celebrations.weeklyGoal, ); const shouldDisplayTriggers = windowWidth >= breakpoints.small.minWidth; + const shouldDisplayChat = windowWidth >= breakpoints.medium.minWidth; const daysPerWeek = course?.courseGoals?.selectedGoal?.daysPerWeek; useEffect(() => { @@ -82,7 +83,7 @@ const Course = ({ isStaff={isStaff} unitId={unitId} /> - {shouldDisplayTriggers && ( + {shouldDisplayChat && ( <> + + )} + {shouldDisplayTriggers && ( + <> {enableNewSidebar === 'true' ? : } )} diff --git a/src/courseware/course/Course.test.jsx b/src/courseware/course/Course.test.jsx index ab629700..74e358d7 100644 --- a/src/courseware/course/Course.test.jsx +++ b/src/courseware/course/Course.test.jsx @@ -17,6 +17,14 @@ jest.mock('@edx/frontend-lib-special-exams/dist/data/thunks.js', () => ({ ...jest.requireActual('@edx/frontend-lib-special-exams/dist/data/thunks.js'), checkExamEntry: () => jest.fn(), })); +const mockChatTestId = 'fake-chat'; +jest.mock( + './chat/Chat', + // eslint-disable-next-line react/prop-types + () => function ({ courseId }) { + return
Chat contents {courseId}
; + }, +); const recordFirstSectionCelebration = jest.fn(); // eslint-disable-next-line no-import-assign @@ -317,4 +325,41 @@ describe('Course', () => { await waitFor(() => expect(screen.getByText('To access course materials, you must score 70% or higher on this exam. Your current score is 30%.')).toBeInTheDocument()); }); }); + + it('displays chat when screen is wide enough (browser)', async () => { + const courseMetadata = Factory.build('courseMetadata', { + learning_assistant_enabled: true, + enrollment: { mode: 'verified' }, + }); + const testStore = await initializeTestStore({ courseMetadata }, false); + const { courseware } = testStore.getState(); + const { courseId, sequenceId } = courseware; + const testData = { + ...mockData, + courseId, + sequenceId, + }; + render(, { store: testStore, wrapWithRouter: true }); + const chat = screen.queryByTestId(mockChatTestId); + await expect(chat).toBeInTheDocument(); + }); + + it('does not display chat when screen is too narrow (mobile)', async () => { + global.innerWidth = breakpoints.extraSmall.minWidth; + const courseMetadata = Factory.build('courseMetadata', { + learning_assistant_enabled: true, + enrollment: { mode: 'verified' }, + }); + const testStore = await initializeTestStore({ courseMetadata }, false); + const { courseware } = testStore.getState(); + const { courseId, sequenceId } = courseware; + const testData = { + ...mockData, + courseId, + sequenceId, + }; + render(, { store: testStore, wrapWithRouter: true }); + const chat = screen.queryByTestId(mockChatTestId); + await expect(chat).not.toBeInTheDocument(); + }); });