import { shallow } from 'enzyme'; import React from 'react'; import { CustomBanner } from './CustomBanner'; import { Application } from '../../application/application.model'; import type { ICustomBannerConfig } from '../../application/config/customBanner/CustomBannerConfig'; import { getTestBannerConfigs } from '../../application/config/customBanner/CustomBannerConfig.spec'; describe('', () => { let application: Application; let wrapper: any; let bannerConfigs: ICustomBannerConfig[]; beforeEach(() => { application = new Application('my-app', null, []); wrapper = shallow(); bannerConfigs = getTestBannerConfigs(); }); describe('view', () => { it('renders no banner by default', () => { expect(wrapper.state('bannerConfig')).toBeNull(); expect(wrapper.find('.custom-banner').length).toEqual(0); }); it('renders banner when appropriate', () => { wrapper.setState({ bannerConfig: bannerConfigs[0] }); expect(wrapper.find('.custom-banner').length).toEqual(1); }); describe('functionality', () => { it('updates state appropriately when no enabled banner found on app attributes', () => { expect(wrapper.state('bannerConfig')).toBeNull(); application.attributes.customBanners = null; wrapper.instance().updateBannerConfig(application.attributes); expect(wrapper.state('bannerConfig')).toBeNull(); }); it('updates state appropriately when enabled banner found on app attributes', () => { expect(wrapper.state('bannerConfig')).toBeNull(); application.attributes.customBanners = bannerConfigs; wrapper.instance().updateBannerConfig(application.attributes); expect(wrapper.state('bannerConfig')).toEqual(bannerConfigs[0]); }); }); }); });