import React from 'react'; import '@testing-library/jest-dom'; import { render, screen } from '@testing-library/react'; import { coreUIAvailableThemes } from '../../style/theme'; import { CoreUiThemeProvider } from '../coreuithemeprovider/CoreUiThemeProvider'; import { useComputeBackgroundColor } from './InfoMessageUtils'; import { InfoMessage } from './InfoMessage.component'; import { getWrapper } from '../../testUtils'; describe('InfoMessage', () => { const selectors = { title: () => screen.getByText('Title'), content: () => screen.getByText('Content'), defaultLinkText: () => screen.getByText('More info'), link: () => screen.getByRole('link'), linkText: () => screen.getByText('Link text'), }; it('should render', () => { const { Wrapper } = getWrapper(); render(, { wrapper: Wrapper, }); expect(selectors.title()).toBeInTheDocument(); expect(selectors.content()).toBeInTheDocument(); }); it('should render with link and default link text', () => { const { Wrapper } = getWrapper(); render( , { wrapper: Wrapper, }, ); expect(selectors.title()).toBeInTheDocument(); expect(selectors.content()).toBeInTheDocument(); expect(selectors.link()).toBeInTheDocument(); expect(selectors.defaultLinkText()).toBeInTheDocument(); expect(selectors.link()).toHaveAttribute('href', 'https://www.google.com'); }); it('should render with correct link text', () => { const { Wrapper } = getWrapper(); render( , { wrapper: Wrapper, }, ); expect(selectors.title()).toBeInTheDocument(); expect(selectors.content()).toBeInTheDocument(); expect(selectors.link()).toBeInTheDocument(); expect(selectors.linkText()).toBeInTheDocument(); expect(selectors.link()).toHaveAttribute('href', 'https://www.google.com'); }); }); describe('useComputeBackgroundColor', () => { const SUT = jest.fn(); afterEach(() => { SUT.mockClear(); }); it('should return backgroundlevel2 by default', () => { //S const Component = () => { const { containerRef, backgroundColor } = useComputeBackgroundColor(); SUT(backgroundColor); return
; }; render( , ); //V expect(SUT).toHaveBeenCalledWith( coreUIAvailableThemes.darkRebrand.backgroundLevel2, ); }); it('should return backgroundlevel3 if parent element backgroundColor is level 2', () => { //S const Component = () => { const { containerRef, backgroundColor } = useComputeBackgroundColor(); SUT(backgroundColor); return (
); }; render( , ); //V expect(SUT).toHaveBeenCalledWith( coreUIAvailableThemes.darkRebrand.backgroundLevel3, ); }); it('should return backgroundlevel3 if parent of parent element backgroundColor is level 2', () => { //S const Component = () => { const { containerRef, backgroundColor } = useComputeBackgroundColor(); SUT(backgroundColor); return (
); }; render( , ); //V expect(SUT).toHaveBeenCalledWith( coreUIAvailableThemes.darkRebrand.backgroundLevel3, ); }); it('should return backgroundlevel2 if parent of parent element backgroundColor is level 3', () => { //S const Component = () => { const { containerRef, backgroundColor } = useComputeBackgroundColor(); SUT(backgroundColor); return (
); }; render( , ); //V expect(SUT).toHaveBeenCalledWith( coreUIAvailableThemes.darkRebrand.backgroundLevel2, ); }); });