department-of-veterans-affairs/vets-website

View on GitHub
src/applications/check-in/components/pages/emergencyContact/EmergencyContactDisplay.unit.spec.jsx

Summary

Maintainability
C
1 day
Test Coverage
import React from 'react';
import { expect } from 'chai';
import { render, fireEvent } from '@testing-library/react';
import sinon from 'sinon';
import { setupI18n, teardownI18n } from '../../../utils/i18n/i18n';
import CheckInProvider from '../../../tests/unit/utils/CheckInProvider';
import EmergencyContactDisplay from './EmergencyContactDisplay';

describe('pre-check-in experience', () => {
  beforeEach(() => {
    setupI18n();
  });
  afterEach(() => {
    teardownI18n();
  });
  describe('shared components', () => {
    describe('EmergencyContactDisplay', () => {
      it('renders with default values', () => {
        const { getByTestId } = render(
          <CheckInProvider>
            <EmergencyContactDisplay yesAction={() => {}} noAction={() => {}} />
          </CheckInProvider>,
        );
        expect(getByTestId('header')).to.contain.text(
          'Is this your current emergency contact?',
        );
      });

      it('renders emergency contact data', () => {
        const emergencyContact = {
          name: 'Bugs Bunny',
          workPhone: '5554445555',
          address: {
            street1: '123 Turtle Trail',
            street2: '',
            street3: '',
            city: 'Treetopper',
            state: 'Tennessee',
            zip: '101010',
          },
          relationship: 'Uncle',
          phone: '5552223333',
        };
        const { getByText } = render(
          <CheckInProvider>
            <EmergencyContactDisplay
              emergencyContact={emergencyContact}
              yesAction={() => {}}
              noAction={() => {}}
            />
          </CheckInProvider>,
        );
        expect(getByText('Address')).to.exist;
        expect(getByText('Phone')).to.exist;
        expect(getByText('Work phone')).to.exist;
        expect(getByText('Name')).to.exist;
        expect(getByText('Relationship')).to.exist;
        expect(getByText('123 Turtle Trail')).to.exist;
        expect(getByText('Treetopper, Tennessee 10101')).to.exist;
        expect(getByText('555-222-3333')).to.exist;
        expect(getByText('555-444-5555')).to.exist;
        expect(getByText('Uncle')).to.exist;
      });

      it('fires the yes function', () => {
        const yesClick = sinon.spy();
        const screen = render(
          <CheckInProvider>
            <EmergencyContactDisplay yesAction={yesClick} noAction={() => {}} />
          </CheckInProvider>,
        );
        fireEvent.click(screen.getByTestId('yes-button'));
        expect(yesClick.calledOnce).to.be.true;
      });
      it('fires the no function', () => {
        const noClick = sinon.spy();
        const screen = render(
          <CheckInProvider>
            <EmergencyContactDisplay yesAction={() => {}} noAction={noClick} />
          </CheckInProvider>,
        );
        fireEvent.click(screen.getByTestId('no-button'));
        expect(noClick.calledOnce).to.be.true;
      });
    });
  });
});