import * as React from 'react'; import { createDriverFactory } from 'wix-ui-test-utils/driver-factory'; import { addressInputDriverFactory } from './AddressInput.driver'; import { AddressInput } from '.'; import { mount } from 'enzyme'; import { GoogleMapsClientStub } from 'wix-ui-core/dist/src/components/address-input/GoogleMapsClientStub'; import * as helper from 'wix-ui-core/dist/src/components/address-input/AddressInputTestHelper'; import * as waitForCond from 'wait-for-cond'; import { AddressInputProps } from './AddressInput'; import Search from 'wix-ui-icons-common/Search'; GoogleMapsClientStub.setAddresses([helper.ADDRESS_1, helper.ADDRESS_2]); GoogleMapsClientStub.setGeocode(helper.GEOCODE_1); const commonProps = { apiKey: '', Client: GoogleMapsClientStub, lang: 'ru', onSelect: () => null }; describe('AddressInput', () => { const createDriver = createDriverFactory(addressInputDriverFactory); it('should always set the core prop forceContentElementVisibility to false', () => { const props = { ...commonProps, forceContentElementVisibility: true } as AddressInputProps; const driver = createDriver(); expect(driver.isContentElementExists()).toBeFalsy(); }); it('should always set the core prop forceOptions to null', () => { const forceOptions = [{ place_id: 0, id: 0, description: 'Hello World' }]; const props = { ...commonProps, forceOptions } as AddressInputProps; const driver = createDriver(); driver.click(); expect(driver.isContentElementExists()).toBeFalsy(); }); it('should always set the core props throttleInterval value to 150', async () => { const props = { ...commonProps, throttleInterval: 1000 } as AddressInputProps; const wrapper = mount(); const coreAddressInput = wrapper.children().find('AddressInput'); const throttleInterval = coreAddressInput.prop('throttleInterval'); expect(throttleInterval).toBe(150); }); it('Should have a focus and blur method', () => { const wrapper = mount(); const input = wrapper.find('input').getDOMNode(); const instance = wrapper.instance() as AddressInput; expect(document.activeElement).not.toBe(input); instance.focus(); expect(document.activeElement).toBe(input); instance.blur(); expect(document.activeElement).not.toBe(input); }); describe('locationIcon', () => { it('should use LocationIcon when showLocationIcon=true', async () => { const driver = createDriver( ); driver.click(); driver.setValue('n'); await waitForCond(() => driver.isContentElementExists()); expect( driver .getContentElement() .querySelector('[data-hook="location-icon-wrapper"]') ).toBeTruthy(); }); it('should NOT use LocationIcon when showLocationIcon=false', async () => { const driver = createDriver( ); driver.click(); driver.setValue('n'); await waitForCond(() => driver.isContentElementExists()); expect( driver .getContentElement() .querySelector('[data-hook="location-icon-wrapper"]') ).toBeFalsy(); }); it('should never pass through the core prop locationIcon', () => { const props = { ...commonProps, locationIcon:
} as AddressInputProps; const wrapper = mount(); const coreAddressInput = wrapper.children().find('AddressInput'); const locationIcon = coreAddressInput.prop('locationIcon'); expect(locationIcon).toBeFalsy(); }); }); describe('magnifyingGlass', () => { it('should display magnifying glass icon by default', () => { const wrapper = mount(); expect(wrapper.find(Search).exists()).toBeTruthy(); }); it('should NOT display magnifying glass when magnifyingGlass is false', () => { const wrapper = mount( ); expect(wrapper.find(Search).exists()).toBeFalsy(); }); }); });