Skip to content

Commit 7eddc91

Browse files
fix: fixed right panel closing issue (#1732)
* fix: fixed right panel closing issue * fix: fixed status of notificationTrayStatus in session storage * test: added test cases to close or open notification tray
1 parent f28528e commit 7eddc91

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

src/courseware/course/new-sidebar/SidebarContextProvider.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ const SidebarProvider: React.FC<Props> = ({
5454
}, [courseId]);
5555

5656
useEffect(() => {
57+
window.sessionStorage.setItem('hideCourseOutlineSidebar', 'true');
58+
window.sessionStorage.setItem(`notificationTrayStatus.${courseId}`, 'open');
5759
setHideDiscussionbar(!isDiscussionbarAvailable);
5860
setHideNotificationbar(!isNotificationbarAvailable);
5961
if (initialSidebar && currentSidebar !== initialSidebar) {

src/courseware/course/new-sidebar/sidebars/discussions-notifications/discussions/DiscussionsWidget.test.tsx

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import React from 'react';
22

3+
import { fireEvent } from '@testing-library/react';
34
import MockAdapter from 'axios-mock-adapter';
45

56
import { getConfig } from '@edx/frontend-platform';
6-
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
77
import { sendTrackEvent } from '@edx/frontend-platform/analytics';
8+
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
89

10+
import { getSessionStorage, setSessionStorage } from '../../../../../../data/sessionStorage';
911
import {
1012
initializeMockApp, initializeTestStore, render, screen,
1113
} from '../../../../../../setupTest';
@@ -14,11 +16,19 @@ import { buildTopicsFromUnits } from '../../../../../data/__factories__/discussi
1416
import { getCourseDiscussionTopics } from '../../../../../data/thunks';
1517
import SidebarContext from '../../../SidebarContext';
1618
import DiscussionsNotificationsSidebar from '../DiscussionsNotificationsSidebar';
19+
import DiscussionsNotificationsTrigger from '../DiscussionsNotificationsTrigger';
1720
import DiscussionsWidget from './DiscussionsWidget';
1821

1922
initializeMockApp();
2023
jest.mock('@edx/frontend-platform/analytics');
2124

25+
jest.mock('../../../../../../data/sessionStorage', () => ({
26+
getSessionStorage: jest.fn(),
27+
setSessionStorage: jest.fn(),
28+
}));
29+
30+
const onClickMock = jest.fn();
31+
2232
describe('DiscussionsWidget', () => {
2333
let axiosMock;
2434
let mockData;
@@ -81,4 +91,34 @@ describe('DiscussionsWidget', () => {
8191
expect(screen.queryByText('Back to course')).toBeInTheDocument();
8292
expect(sendTrackEvent).toHaveBeenCalledTimes(1);
8393
});
94+
95+
it('should open notification tray if closed', () => {
96+
(getSessionStorage as jest.Mock).mockReturnValue('closed');
97+
98+
renderWithProvider(() => <DiscussionsNotificationsTrigger onClick={onClickMock} />);
99+
100+
const button = screen.getByRole('button');
101+
fireEvent.click(button);
102+
103+
expect(setSessionStorage).toHaveBeenCalledWith(
104+
`notificationTrayStatus.${courseId}`,
105+
'open',
106+
);
107+
expect(onClickMock).toHaveBeenCalled();
108+
});
109+
110+
it('should close notification tray if open', () => {
111+
(getSessionStorage as jest.Mock).mockReturnValue('open');
112+
113+
renderWithProvider(() => <DiscussionsNotificationsTrigger onClick={onClickMock} />);
114+
115+
const button = screen.getByRole('button');
116+
fireEvent.click(button);
117+
118+
expect(setSessionStorage).toHaveBeenCalledWith(
119+
`notificationTrayStatus.${courseId}`,
120+
'open',
121+
);
122+
expect(onClickMock).toHaveBeenCalled();
123+
});
84124
});

src/courseware/course/sidebar/sidebars/course-outline/hooks.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export const useCourseOutlineSidebar = () => {
6868
} else {
6969
toggleSidebar(ID);
7070
window.sessionStorage.removeItem('hideCourseOutlineSidebar');
71+
window.sessionStorage.setItem(`notificationTrayStatus.${courseId}`, 'closed');
7172
}
7273
};
7374

0 commit comments

Comments
 (0)