Files
frontend-app-authoring/src/group-configurations/content-groups-section/ContentGroupCard.test.jsx
ruzniaievdm 907ce50071 feat: [FC-0044] group configurations MFE page (#929)
* feat: group configurations - index page

* feat: [AXIMST-63] Index group configurations page

* fix: resolve discussions

* fix: resolve second round discussions

* feat: group configurations - content group actions

* feat: [AXIMST-75, AXIMST-69, AXIMST-81] Content group actions

* fix: resolve conversations

* feat: group configurations - sidebar

* feat: [AXIMST-87] group-configuration page sidebar

* refactor: [AXIMST-87] add changes after review

* refactor: [AXIMST-87] add changes after review

* refactor: [AXIMST-87] add changes ater review

---------

Co-authored-by: Kyrylo Hudym-Levkovych <kyr.hudym@kyrs-MacBook-Pro.local>

* fix: group configurations - the page reloads after the user saves changes

* feat: group configurations - experiment groups

* feat: [AXIMST-93, 99, 105] Group configuration - Experiment Groups

* fix: [AXIMST-518, 537] Group configuration - resolve bugs

* fix: review discussions

* fix: revert classname case

* fix: group configurations - resolve discussions

fix: [AXIMST-714] icon is aligned with text (#210)

* fix: add hook tests

* fix: add thunk tests

* fix: add slice tests

* chore: group configurations - messages

* fix: group configurations - remove delete in edit mode

---------

Co-authored-by: Kyr <40792129+khudym@users.noreply.github.com>
Co-authored-by: Kyrylo Hudym-Levkovych <kyr.hudym@kyrs-MacBook-Pro.local>
Co-authored-by: monteri <lansevermore>
2024-04-23 11:53:49 -04:00

94 lines
3.4 KiB
JavaScript

import { render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { IntlProvider } from '@edx/frontend-platform/i18n';
import { contentGroupsMock } from '../__mocks__';
import commonMessages from '../common/messages';
import rootMessages from '../messages';
import ContentGroupCard from './ContentGroupCard';
const handleCreateMock = jest.fn();
const handleDeleteMock = jest.fn();
const handleEditMock = jest.fn();
const contentGroupActions = {
handleCreate: handleCreateMock,
handleDelete: handleDeleteMock,
handleEdit: handleEditMock,
};
const handleEditGroupMock = jest.fn();
const contentGroup = contentGroupsMock.groups[0];
const contentGroupWithUsages = contentGroupsMock.groups[1];
const contentGroupWithOnlyOneUsage = contentGroupsMock.groups[2];
const renderComponent = (props = {}) => render(
<IntlProvider locale="en">
<ContentGroupCard
group={contentGroup}
groupNames={contentGroupsMock.groups?.map((group) => group.name)}
parentGroupId={contentGroupsMock.id}
contentGroupActions={contentGroupActions}
handleEditGroup={handleEditGroupMock}
{...props}
/>
</IntlProvider>,
);
describe('<ContentGroupCard />', () => {
it('renders component correctly', () => {
const { getByText, getByTestId } = renderComponent();
expect(getByText(contentGroup.name)).toBeInTheDocument();
expect(
getByText(
commonMessages.titleId.defaultMessage.replace('{id}', contentGroup.id),
),
).toBeInTheDocument();
expect(getByText(rootMessages.notInUse.defaultMessage)).toBeInTheDocument();
expect(getByTestId('content-group-card-header-edit')).toBeInTheDocument();
expect(getByTestId('content-group-card-header-delete')).toBeInTheDocument();
});
it('expands/collapses the container group content on title click', () => {
const {
getByText, queryByTestId, getByTestId, queryByText,
} = renderComponent();
const cardTitle = getByTestId('configuration-card-header-button');
userEvent.click(cardTitle);
expect(queryByTestId('content-group-card-content')).toBeInTheDocument();
expect(
queryByText(rootMessages.notInUse.defaultMessage),
).not.toBeInTheDocument();
userEvent.click(cardTitle);
expect(queryByTestId('content-group-card-content')).not.toBeInTheDocument();
expect(getByText(rootMessages.notInUse.defaultMessage)).toBeInTheDocument();
});
it('renders content group badge with used only one location', () => {
const { queryByTestId } = renderComponent({
group: contentGroupWithOnlyOneUsage,
});
const usageBlock = queryByTestId('configuration-card-header-button-usage');
expect(usageBlock).toBeInTheDocument();
});
it('renders content group badge with used locations', () => {
const { queryByTestId } = renderComponent({
group: contentGroupWithUsages,
});
const usageBlock = queryByTestId('configuration-card-header-button-usage');
expect(usageBlock).toBeInTheDocument();
});
it('renders group controls without access to units', () => {
const { queryByText, getByTestId } = renderComponent();
expect(
queryByText(commonMessages.accessTo.defaultMessage),
).not.toBeInTheDocument();
const cardTitle = getByTestId('configuration-card-header-button');
userEvent.click(cardTitle);
expect(getByTestId('configuration-card-usage-empty')).toBeInTheDocument();
});
});