docbrown/app/javascript/organization/__tests__/OrganizationPicker.test.jsx

71 lines
1.9 KiB
JavaScript

import { h } from 'preact';
import { render } from '@testing-library/preact';
import { axe } from 'jest-axe';
import { OrganizationPicker } from '../OrganizationPicker';
const commonProps = {
id: 'someFormElementId',
name: 'someFormElementName',
onToggle: jest.fn(),
};
const organizations = [
{ id: 1, name: 'Acme Org 1' },
{ id: 2, name: 'Acme Org 2' },
];
describe('<OrganizationPicker />', () => {
it('should have no a11y violations', async () => {
const { container } = render(
<OrganizationPicker
{...commonProps}
organizationId={1}
organizations={organizations}
/>,
);
const results = await axe(container);
expect(results).toHaveNoViolations();
});
it('renders with the given organization selected from the list of available organizations', () => {
const { getByText } = render(
<OrganizationPicker
{...commonProps}
organizationId={1}
organizations={organizations}
/>,
);
getByText('Acme Org 1');
getByText('Acme Org 2');
expect(getByText('Acme Org 1').selected).toEqual(true);
});
it('renders with no organization selected when the organization ID is not set', () => {
const { getByText } = render(
<OrganizationPicker
{...commonProps}
organizationId={undefined}
organizations={organizations}
/>,
);
getByText('Acme Org 1');
getByText('Acme Org 2');
expect(getByText('Acme Org 1').selected).toEqual(false);
expect(getByText('Acme Org 2').selected).toEqual(false);
});
it('renders an organization list with only "None" as an option when no organizations are passed in.', () => {
const { queryByText } = render(
<OrganizationPicker
{...commonProps}
organizationId={undefined}
organizations={[]}
/>,
);
expect(queryByText('None')).toBeDefined();
});
});