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();
+ });
});