import { test, expect } from 'vitest'; import { render } from '@testing-library/react'; import PhaseBanner from './PhaseBanner'; const BANNER_TEXT = 'This is a new service. Your feedback will help us to improve it.'; const DEFAULT_TEXT = 'This is a new service'; test('phase banner renders correctly', () => { render( {BANNER_TEXT} ); const phaseBanner = document.querySelector('.ds_phase-banner'); const phaseBannerContent = phaseBanner?.querySelector('.ds_phase-banner__content'); const phaseBannerWrapper = phaseBannerContent?.parentElement; const phaseBannerText = phaseBannerContent?.querySelector('.ds_phase-banner__text'); expect(phaseBanner).toBeInTheDocument(); expect(phaseBanner?.tagName).toEqual('DIV'); expect(phaseBannerWrapper).toHaveClass('ds_wrapper'); expect(phaseBannerWrapper?.tagName).toEqual('DIV'); expect(phaseBannerContent?.tagName).toEqual('P'); expect(phaseBannerText?.tagName).toEqual('SPAN'); expect(phaseBannerText?.textContent).toEqual(BANNER_TEXT); }); test('phase banner with default text', () => { render( ); const phaseBanner = document.querySelector('.ds_phase-banner'); const phaseBannerContent = phaseBanner?.querySelector('.ds_phase-banner__content'); const phaseBannerText = phaseBannerContent?.querySelector('.ds_phase-banner__text'); expect(phaseBannerText?.textContent).toEqual(DEFAULT_TEXT); }); test('phase banner with phase tag', () => { const PHASE_TEXT = 'Beta'; render( ); const phaseBanner = document.querySelector('.ds_phase-banner'); const phaseBannerTag = phaseBanner?.querySelector('.ds_phase-banner__tag'); expect(phaseBannerTag).toBeInTheDocument(); expect(phaseBannerTag?.tagName).toEqual('SPAN'); expect(phaseBannerTag).toHaveClass('ds_tag', 'ds_phase-banner__tag'); expect(phaseBannerTag?.textContent).toEqual(PHASE_TEXT); }); test('passing additional props', () => { render( This is a new service. Your feedback will help us to improve it. ) const phaseBanner = document.querySelector('.ds_phase-banner') as HTMLElement; expect(phaseBanner?.dataset.test).toEqual('foo'); }); test('passing additional CSS classes', () => { render( This is a new service. Your feedback will help us to improve it. ) const phaseBanner = document.querySelector('.ds_phase-banner'); expect(phaseBanner).toHaveClass('foo', 'ds_phase-banner'); });