Skip to content
Snippets Groups Projects
QuizFinish.spec.tsx 1.25 KiB
import { render, screen } from '@testing-library/react'
import { userEvent } from '@testing-library/user-event'
import React from 'react'
import { Provider } from 'react-redux'
import { createMockEcolyoStore } from 'tests/__mocks__/store'
import { userChallengeData } from 'tests/__mocks__/userChallengeData.mock'
import QuizFinish from './QuizFinish'

const mockUserChallengeUpdateFlag = jest.fn()
jest.mock('services/challenge.service', () => {
  return jest.fn(() => ({
    updateUserChallenge: mockUserChallengeUpdateFlag,
  }))
})

const mockedNavigate = jest.fn()
jest.mock('react-router-dom', () => ({
  ...jest.requireActual('react-router-dom'),
  useNavigate: () => mockedNavigate,
}))

describe('QuizFinish', () => {
  it('should be rendered correctly', async () => {
    const store = createMockEcolyoStore()
    const { container } = render(
      <Provider store={store}>
        <QuizFinish userChallenge={userChallengeData[0]} />
      </Provider>
    )
    expect(container.getElementsByClassName('quiz-icon')[0]).toBeInTheDocument()
    await userEvent.click(screen.getAllByRole('button')[0])
    expect(mockUserChallengeUpdateFlag).toHaveBeenCalled()
    expect(mockedNavigate).toHaveBeenCalledWith('/challenges')
  })
})