import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import { CtaButton } from '../CtaButton'; import { tealiumTrackingHandler } from '../../../helpers/tracking/TrackingHandler'; jest.mock('../../../helpers/tracking/TrackingHandler', () => ({ tealiumTrackingHandler: jest.fn() })); describe('CtaButton Component', () => { const defaultProps = { url: 'https://www.example.com', target: '_blank', text: 'Book a Stay' }; it('calls tealiumTrackingHandler on link click', () => { const { getByText } = render(); const link = getByText('Book a Stay'); fireEvent.click(link); expect(tealiumTrackingHandler).toHaveBeenCalledWith( 'affiliate cta clicked', 'navigation', 'click', 'https://www.example.com', 'book a stay' ); }); it('does not render anything if attributes are not provided', () => { const { container } = render(); expect(container.firstChild).toBeNull(); }); it('does not render anything if text is empty or contains only whitespace', () => { const { container: emptyTextContainer } = render( ); expect(emptyTextContainer.firstChild).toBeNull(); const { container: whitespaceTextContainer } = render( ); expect(whitespaceTextContainer.firstChild).toBeNull(); }); it('does not render anything if url is missing or empty', () => { const { container: noUrlContainer } = render( ); expect(noUrlContainer.firstChild).toBeNull(); }); });