From a7814d995af82b10d7c87d13e69fb194085ab37b Mon Sep 17 00:00:00 2001 From: Navin Karkera Date: Tue, 19 Dec 2023 20:00:25 +0530 Subject: [PATCH] test: additional tests for sections --- src/course-outline/CourseOutline.test.jsx | 4 +- .../section-card/SectionCard.test.jsx | 78 +++++++++++++++++-- 2 files changed, 75 insertions(+), 7 deletions(-) diff --git a/src/course-outline/CourseOutline.test.jsx b/src/course-outline/CourseOutline.test.jsx index 8242ebe8ee..84e3382a75 100644 --- a/src/course-outline/CourseOutline.test.jsx +++ b/src/course-outline/CourseOutline.test.jsx @@ -408,7 +408,9 @@ describe('', () => { await executeThunk(publishCourseItemQuery(section.id, section.id), store.dispatch); const firstSection = getAllByTestId('section-card')[0]; - expect(firstSection.querySelector('.item-card-header__badge-status')).toHaveTextContent('Published not live'); + expect( + firstSection.querySelector('.item-card-header__badge-status'), + ).toHaveTextContent(cardHeaderMessages.statusBadgePublishedNotLive.defaultMessage); }); it('check configure section when configure query is successful', async () => { diff --git a/src/course-outline/section-card/SectionCard.test.jsx b/src/course-outline/section-card/SectionCard.test.jsx index b1a65402d3..725b219811 100644 --- a/src/course-outline/section-card/SectionCard.test.jsx +++ b/src/course-outline/section-card/SectionCard.test.jsx @@ -8,6 +8,7 @@ import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth'; import initializeStore from '../../store'; import SectionCard from './SectionCard'; +import cardHeaderMessages from '../card-header/messages'; // eslint-disable-next-line no-unused-vars let axiosMock; @@ -25,6 +26,8 @@ const section = { highlights: ['highlight 1', 'highlight 2'], }; +const onEditSectionSubmit = jest.fn(); + const renderComponent = (props) => render( @@ -33,14 +36,11 @@ const renderComponent = (props) => render( onOpenPublishModal={jest.fn()} onOpenHighlightsModal={jest.fn()} onOpenDeleteModal={jest.fn()} - onEditClick={jest.fn()} savingStatus="" - onEditSectionSubmit={jest.fn()} + onEditSectionSubmit={onEditSectionSubmit} onDuplicateSubmit={jest.fn()} - isSectionsExpanded - namePrefix="section" - connectDragSource={(el) => el} - isDragging + isSectionsExpanded={true} + onNewSubsectionSubmit={jest.fn()} {...props} > children @@ -83,4 +83,70 @@ describe('', () => { expect(queryByTestId('section-card__subsections')).toBeInTheDocument(); expect(queryByTestId('new-subsection-button')).toBeInTheDocument(); }); + + it('title only updates if changed', async () => { + const { queryByTestId, findByTestId } = renderComponent(); + + const editButton = await findByTestId('edit-button'); + fireEvent.click(editButton); + expect(queryByTestId('edit field')).toBeInTheDocument(); + + const menu = await findByTestId('section-card-header__menu-button'); + fireEvent.click(menu); + + expect(onEditSectionSubmit).not.toHaveBeenCalled(); + + fireEvent.click(editButton); + const editField = await findByTestId('edit field'); + fireEvent.change(editField, { target: { value: 'some random value' } }); + fireEvent.blur(editField); + expect(onEditSectionSubmit).toHaveBeenCalled(); + }); + + it('renders live status', async () => { + const { findByText } = renderComponent(); + expect(await findByText(cardHeaderMessages.statusBadgeLive.defaultMessage)).toBeInTheDocument(); + }); + + it('renders published but live status', async () => { + const { findByText } = renderComponent({ + section: { + ...section, + published: true, + releasedToStudents: false, + visibleToStaffOnly: false, + visibilityState: 'visible', + staffOnlyMessage: false, + }, + }); + expect(await findByText(cardHeaderMessages.statusBadgePublishedNotLive.defaultMessage)).toBeInTheDocument(); + }); + + it('renders staff status', async () => { + const { findByText } = renderComponent({ + section: { + ...section, + published: false, + releasedToStudents: false, + visibleToStaffOnly: true, + visibilityState: 'staff_only', + staffOnlyMessage: true, + }, + }); + expect(await findByText(cardHeaderMessages.statusBadgeStaffOnly.defaultMessage)).toBeInTheDocument(); + }); + + it('renders draft status', async () => { + const { findByText } = renderComponent({ + section: { + ...section, + published: false, + releasedToStudents: false, + visibleToStaffOnly: false, + visibilityState: 'staff_only', + staffOnlyMessage: false, + }, + }); + expect(await findByText(cardHeaderMessages.statusBadgeDraft.defaultMessage)).toBeInTheDocument(); + }); });