import React from 'react' import { fireEvent, render, screen } from '@testing-library/react' import { SpecialOffer } from './SpecialOffer' const picture = { url: 'https://cdn.blablacar.com/kairos/assets/build/images/blablasure_logo-459e4b952a6cc04b72ea0e12f98ec673.svg', alt: 'The BlaBlaSure offer logo', } const title = 'A wonderful offer' const description = 'Once you receive your first rating, receive a 30€ voucher on Total spring green electricity offer for your home. So come back here to enjoy it !' const informationLink = { label: 'Learn more about the conditions', url: 'http://example.com/learn-more', } const ctaLink = { label: 'Register for option 1!', url: 'http://example.com/register1', } const ctaLink2 = { label: 'Register for option 2!', url: 'http://example.com/register2', } describe('SpecialOffer', () => { it('should display the corresponding picture', () => { render( , ) expect(screen.getByAltText(picture.alt)).toBeInTheDocument() expect(screen.getByAltText(picture.alt)).toHaveAttribute('src', picture.url) }) it('should display the title', () => { render( , ) expect(screen.getByText(title)).toBeInTheDocument() }) it('should display the description', () => { render( , ) expect(screen.getByText(description)).toBeInTheDocument() }) it('should display the information link', () => { render( , ) expect(screen.getByText(informationLink.label)).toHaveAttribute('href', informationLink.url) }) it('should display the cta links', () => { render( , ) expect(screen.getByText(ctaLink.label)).toHaveAttribute('href', ctaLink.url) expect(screen.getByText(ctaLink2.label)).toHaveAttribute('href', ctaLink2.url) }) it('should display the cta buttons', () => { const ctaButton = { label: 'Register for option 1!', onClick: jest.fn(), } const ctaButton2 = { label: 'Register for option 2!', onClick: jest.fn(), } render( , ) fireEvent.click(screen.getByText(ctaButton.label)) expect(ctaButton.onClick).toHaveBeenCalledTimes(1) fireEvent.click(screen.getByText(ctaButton2.label)) expect(ctaButton2.onClick).toHaveBeenCalledTimes(1) }) })