import { shallow } from 'enzyme'; import React from 'react'; import type { ICustomBannerConfig } from './CustomBannerConfig'; import { CustomBannerConfig } from './CustomBannerConfig'; import { noop } from '../../../utils'; describe('', () => { let bannerConfigs: ICustomBannerConfig[]; let wrapper: any; beforeEach(() => { bannerConfigs = getTestBannerConfigs(); wrapper = shallow( , ); }); describe('view', () => { it('renders a row for each banner config', () => { expect(wrapper.find('.custom-banner-config-row').length).toEqual(bannerConfigs.length); }); it('renders an "add" button', () => { expect(wrapper.find('.add-new').length).toEqual(1); }); }); describe('functionality', () => { it('update banner config', () => { expect(wrapper.state('bannerConfigsEditing')).toEqual(bannerConfigs); wrapper .find('input[type="checkbox"]') .at(1) .simulate('change', { target: { checked: true } }); const updatedConfigs = [ { ...bannerConfigs[0], enabled: false, }, { ...bannerConfigs[1], enabled: true, }, ]; expect(wrapper.state('bannerConfigsEditing')).toEqual(updatedConfigs); }); it('add banner config', () => { expect(wrapper.state('bannerConfigsEditing').length).toEqual(2); wrapper.find('.add-new').simulate('click'); expect(wrapper.state('bannerConfigsEditing').length).toEqual(3); }); it('remove banner config', () => { expect(wrapper.state('bannerConfigsEditing').length).toEqual(2); wrapper.find('.custom-banner-config-remove').at(1).simulate('click'); expect(wrapper.state('bannerConfigsEditing').length).toEqual(1); }); }); }); export function getTestBannerConfigs(): ICustomBannerConfig[] { return [ { backgroundColor: 'var(--color-alert)', enabled: true, text: 'Warning: currently in maintenance mode', textColor: 'var(--color-text-on-dark)', }, { backgroundColor: 'var(--color-alert)', enabled: false, text: 'Warning: currently in production freeze', textColor: 'var(--color-text-on-dark)', }, ]; }