Project

General

Profile

Download (1.83 KB) Statistics
| Branch: | Tag: | Revision:
import React from 'react';
import { shallow } from '@theforeman/test';

import { testComponentSnapshotsWithFixtures } from '../../../common/testHelpers';
import TaxonomyDropdown from './TaxonomyDropdown';
import { hasTaxonomiesMock } from '../Layout.fixtures';

const props = {
taxonomyType: 'Organization',
id: 'organization-dropdown',
currentTaxonomy: hasTaxonomiesMock.currentOrganization,
taxonomies: hasTaxonomiesMock.data.orgs.available_organizations,
anyTaxonomyText: 'Any Organization',
manageTaxonomyText: 'Manage Organizations',
anyTaxonomyURL: '/organizations/clear',
manageTaxonomyURL: '/organizations',
};

const propsSearch = {
...props,
taxonomies: hasTaxonomiesMock.data.orgs.many_organizations,
};

const fixtures = {
'render TaxonomyDropdown': { ...props },
'render TaxonomyDropdownWithSearch': { ...propsSearch },
};

describe('TaxonomyDropdown', () => {
describe('rendering', () =>
testComponentSnapshotsWithFixtures(TaxonomyDropdown, fixtures));

describe('simulate onClick', () => {
const changeTaxonomy = jest.fn();

const wrapper = shallow(
<TaxonomyDropdown {...props} changeTaxonomy={changeTaxonomy} />
);
wrapper
.find('.organization_menuitem')
.at(0)
.simulate('click');
wrapper.find('.organizations_clear').simulate('click');
expect(changeTaxonomy).toHaveBeenCalledTimes(2);
});

it('Search items', () => {
const wrapper = shallow(<TaxonomyDropdown {...propsSearch} />);
const searchInput = wrapper.find('input.taxonomy_search');

expect(searchInput.exists()).toBeTruthy();

searchInput.simulate('change', { target: { value: 'org7' } });
expect(wrapper.find('a.organization_menuitem')).toHaveLength(1);

searchInput.simulate('change', { target: { value: '' } });
expect(wrapper.find('a.organization_menuitem')).toHaveLength(7);
});
});
(8-8/13)