|
|
|
|
@@ -11,7 +11,6 @@ import { cloneDeep } from 'lodash';
|
|
|
|
|
import { closestCorners } from '@dnd-kit/core';
|
|
|
|
|
|
|
|
|
|
import { useLocation } from 'react-router-dom';
|
|
|
|
|
import userEvent from '@testing-library/user-event';
|
|
|
|
|
import {
|
|
|
|
|
getCourseBestPracticesApiUrl,
|
|
|
|
|
getCourseLaunchApiUrl,
|
|
|
|
|
@@ -289,13 +288,15 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('check that new section list is saved when dragged', async () => {
|
|
|
|
|
const { findAllByRole } = render(<RootWrapper />);
|
|
|
|
|
const courseBlockId = courseOutlineIndexMock.courseStructure.id;
|
|
|
|
|
const { findAllByRole, findByTestId } = render(<RootWrapper />);
|
|
|
|
|
const expandAllButton = await findByTestId('expand-collapse-all-button');
|
|
|
|
|
fireEvent.click(expandAllButton);
|
|
|
|
|
const [section] = store.getState().courseOutline.sectionsList;
|
|
|
|
|
const sectionsDraggers = await findAllByRole('button', { name: 'Drag to reorder' });
|
|
|
|
|
const draggableButton = sectionsDraggers[6];
|
|
|
|
|
const draggableButton = sectionsDraggers[1];
|
|
|
|
|
|
|
|
|
|
axiosMock
|
|
|
|
|
.onPut(getCourseBlockApiUrl(courseBlockId))
|
|
|
|
|
.onPut(getCourseBlockApiUrl(section.id))
|
|
|
|
|
.reply(200, { dummy: 'value' });
|
|
|
|
|
|
|
|
|
|
const section1 = store.getState().courseOutline.sectionsList[0].id;
|
|
|
|
|
@@ -314,13 +315,15 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('check section list is restored to original order when API call fails', async () => {
|
|
|
|
|
const { findAllByRole } = render(<RootWrapper />);
|
|
|
|
|
const courseBlockId = courseOutlineIndexMock.courseStructure.id;
|
|
|
|
|
const { findAllByRole, findByTestId } = render(<RootWrapper />);
|
|
|
|
|
const expandAllButton = await findByTestId('expand-collapse-all-button');
|
|
|
|
|
fireEvent.click(expandAllButton);
|
|
|
|
|
const [section] = store.getState().courseOutline.sectionsList;
|
|
|
|
|
const sectionsDraggers = await findAllByRole('button', { name: 'Drag to reorder' });
|
|
|
|
|
const draggableButton = sectionsDraggers[6];
|
|
|
|
|
const draggableButton = sectionsDraggers[1];
|
|
|
|
|
|
|
|
|
|
axiosMock
|
|
|
|
|
.onPut(getCourseBlockApiUrl(courseBlockId))
|
|
|
|
|
.onPut(getCourseBlockApiUrl(section.id))
|
|
|
|
|
.reply(500);
|
|
|
|
|
|
|
|
|
|
const section1 = store.getState().courseOutline.sectionsList[0].id;
|
|
|
|
|
@@ -395,8 +398,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const { findAllByTestId } = render(<RootWrapper />);
|
|
|
|
|
const [sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const units = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
expect(units.length).toBe(1);
|
|
|
|
|
|
|
|
|
|
@@ -421,8 +422,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
render(<RootWrapper />);
|
|
|
|
|
const [sectionElement] = await screen.findAllByTestId('section-card');
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const units = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
expect(units.length).toBe(1);
|
|
|
|
|
|
|
|
|
|
@@ -646,8 +645,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
await checkEditTitle(section, subsectionElement, subsection, 'New subsection name', 'subsection');
|
|
|
|
|
|
|
|
|
|
// check unit
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const [unit] = subsection.childInfo.children;
|
|
|
|
|
const [unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
await checkEditTitle(section, unitElement, unit, 'New unit name', 'unit');
|
|
|
|
|
@@ -660,8 +657,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [sectionElement] = await screen.findAllByTestId('section-card');
|
|
|
|
|
const [subsection] = section.childInfo.children;
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const [unit] = subsection.childInfo.children;
|
|
|
|
|
const [unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -700,8 +695,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [subsection] = section.childInfo.children;
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const [unit] = subsection.childInfo.children;
|
|
|
|
|
const [unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -771,8 +764,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [subsection] = section.childInfo.children;
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const [unit] = subsection.childInfo.children;
|
|
|
|
|
const [unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -1481,8 +1472,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
|
|
|
|
|
const [firstSection] = await findAllByTestId('section-card');
|
|
|
|
|
const [firstSubsection] = await within(firstSection).findAllByTestId('subsection-card');
|
|
|
|
|
const subsectionExpandButton = await within(firstSubsection).getByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(subsectionExpandButton);
|
|
|
|
|
const [firstUnit] = await within(firstSubsection).findAllByTestId('unit-card');
|
|
|
|
|
const unitDropdownButton = await within(firstUnit).findByTestId('unit-card-header__menu-button');
|
|
|
|
|
|
|
|
|
|
@@ -1842,8 +1831,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [, sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [, subsection] = section.childInfo.children;
|
|
|
|
|
const [, subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
await act(async () => fireEvent.click(expandBtn));
|
|
|
|
|
const [, secondUnit] = subsection.childInfo.children;
|
|
|
|
|
const [, unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -1883,8 +1870,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [, sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [firstSubsection, subsection] = section.childInfo.children;
|
|
|
|
|
const [, subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
await act(async () => fireEvent.click(expandBtn));
|
|
|
|
|
const [unit] = subsection.childInfo.children;
|
|
|
|
|
const [unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -1920,8 +1905,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [subsection] = secondSection.childInfo.children;
|
|
|
|
|
const firstSectionLastSubsection = firstSection.childInfo.children[firstSection.childInfo.children.length - 1];
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
await act(async () => fireEvent.click(expandBtn));
|
|
|
|
|
const [unit] = subsection.childInfo.children;
|
|
|
|
|
const [unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -1966,8 +1949,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [, sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [firstSubsection, subsection] = section.childInfo.children;
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
await act(async () => fireEvent.click(expandBtn));
|
|
|
|
|
const lastUnitIdx = firstSubsection.childInfo.children.length - 1;
|
|
|
|
|
const unit = firstSubsection.childInfo.children[lastUnitIdx];
|
|
|
|
|
const unitElement = (await within(subsectionElement).findAllByTestId('unit-card'))[lastUnitIdx];
|
|
|
|
|
@@ -2005,8 +1986,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const secondSectionLastSubsection = secondSection.childInfo.children[lastSubIndex];
|
|
|
|
|
const thirdSectionFirstSubsection = thirdSection.childInfo.children[0];
|
|
|
|
|
const subsectionElement = (await within(sectionElement).findAllByTestId('subsection-card'))[lastSubIndex];
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
await act(async () => fireEvent.click(expandBtn));
|
|
|
|
|
const lastUnitIdx = secondSectionLastSubsection.childInfo.children.length - 1;
|
|
|
|
|
const unit = secondSectionLastSubsection.childInfo.children[lastUnitIdx];
|
|
|
|
|
const unitElement = (await within(subsectionElement).findAllByTestId('unit-card'))[lastUnitIdx];
|
|
|
|
|
@@ -2051,8 +2030,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const sections = await findAllByTestId('section-card');
|
|
|
|
|
const [sectionElement] = sections;
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
await act(async () => fireEvent.click(expandBtn));
|
|
|
|
|
// get first and only unit in the subsection
|
|
|
|
|
const [firstUnit] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -2072,8 +2049,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const lastSection = sections[sections.length - 1];
|
|
|
|
|
// it has only one subsection
|
|
|
|
|
const [lastSubsectionElement] = await within(lastSection).findAllByTestId('subsection-card');
|
|
|
|
|
const lastExpandBtn = await within(lastSubsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
await act(async () => fireEvent.click(lastExpandBtn));
|
|
|
|
|
// get last and the only unit in the subsection
|
|
|
|
|
const [lastUnit] = await within(lastSubsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
@@ -2094,6 +2069,9 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const { findAllByTestId } = render(<RootWrapper />);
|
|
|
|
|
|
|
|
|
|
const [sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const [section] = store.getState().courseOutline.sectionsList;
|
|
|
|
|
const subsectionsDraggers = within(sectionElement).getAllByRole('button', { name: 'Drag to reorder' });
|
|
|
|
|
const draggableButton = subsectionsDraggers[1];
|
|
|
|
|
@@ -2125,6 +2103,9 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const { findAllByTestId } = render(<RootWrapper />);
|
|
|
|
|
|
|
|
|
|
const [sectionElement] = await findAllByTestId('section-card');
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const [section] = store.getState().courseOutline.sectionsList;
|
|
|
|
|
const subsectionsDraggers = within(sectionElement).getAllByRole('button', { name: 'Drag to reorder' });
|
|
|
|
|
const draggableButton = subsectionsDraggers[1];
|
|
|
|
|
@@ -2154,8 +2135,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const section = store.getState().courseOutline.sectionsList[2];
|
|
|
|
|
const [subsection] = section.childInfo.children;
|
|
|
|
|
const expandBtn = within(subsectionElement).getByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const unitDraggers = await within(subsectionElement).findAllByRole('button', { name: 'Drag to reorder' });
|
|
|
|
|
const draggableButton = unitDraggers[1];
|
|
|
|
|
const sections = courseOutlineIndexMock.courseStructure.childInfo.children;
|
|
|
|
|
@@ -2190,8 +2169,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
const [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const section = store.getState().courseOutline.sectionsList[2];
|
|
|
|
|
const [subsection] = section.childInfo.children;
|
|
|
|
|
const expandBtn = within(subsectionElement).getByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
fireEvent.click(expandBtn);
|
|
|
|
|
const unitDraggers = await within(subsectionElement).findAllByRole('button', { name: 'Drag to reorder' });
|
|
|
|
|
const draggableButton = unitDraggers[1];
|
|
|
|
|
const sections = courseOutlineIndexMock.courseStructure.childInfo.children;
|
|
|
|
|
@@ -2229,8 +2206,6 @@ describe('<CourseOutline />', () => {
|
|
|
|
|
.onGet(getXBlockApiUrl(section.id))
|
|
|
|
|
.reply(200, courseSectionMock);
|
|
|
|
|
let [subsectionElement] = await within(sectionElement).findAllByTestId('subsection-card');
|
|
|
|
|
const expandBtn = await within(subsectionElement).findByTestId('subsection-card-header__expanded-btn');
|
|
|
|
|
userEvent.click(expandBtn);
|
|
|
|
|
const [unit] = subsection.childInfo.children;
|
|
|
|
|
const [unitElement] = await within(subsectionElement).findAllByTestId('unit-card');
|
|
|
|
|
|
|
|
|
|
|