import type { ReactWrapper } from 'enzyme';
import { mount } from 'enzyme';
import React from 'react';
import type { ISearchProps } from './Search';
import { Search } from './Search';
import { SearchFilterTypeRegistry } from './SearchFilterTypeRegistry';
describe('', () => {
SearchFilterTypeRegistry.register({ key: 'account', name: 'Account' });
SearchFilterTypeRegistry.register({ key: 'region', name: 'Region' });
let component: ReactWrapper;
function getNewSearch(params: object, handleChange: () => void): ReactWrapper {
return mount();
}
function noop(): void {}
it('should display a search component with no tags', () => {
component = getNewSearch({}, noop);
expect(component.find('div.tag').length).toBe(0);
});
it('should display a search component with existing tags', () => {
const params = { name: 'test', region: 'us-west-1', account: 'prod' };
component = getNewSearch(params, noop);
expect(component.find('div.tag').length).toBe(3);
});
it('should have focus when rendered and removed when blurred', () => {
component = getNewSearch({}, noop);
expect(component.find('div.search__input').hasClass('search__input--focus')).toBeTruthy();
expect(component.find('div.search__input').hasClass('search__input--blur')).toBeFalsy();
component.setState({ isFocused: false });
expect(component.find('div.search__input').hasClass('search__input--focus')).toBeFalsy();
expect(component.find('div.search__input').hasClass('search__input--blur')).toBeTruthy();
});
it('should clear the tags when the clear button is clicked', () => {
let changeCalled = false;
function handleChange() {
changeCalled = true;
}
const params = { name: 'test', region: 'us-west-1', account: 'prod' };
component = getNewSearch(params, handleChange);
component.find('i.fa-times').simulate('click');
expect(component.find('div.tag').length).toBe(0);
expect(changeCalled).toBeTruthy();
});
});