Skip to content
Snippets Groups Projects
QuizBegin.spec.tsx 1.25 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { render, screen } from '@testing-library/react'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import { userEvent } from '@testing-library/user-event'
    
    import { UserChallengeUpdateFlag } from 'enums'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import React from 'react'
    
    Yoan VALLET's avatar
    Yoan VALLET committed
    import { Provider } from 'react-redux'
    
    import { createMockEcolyoStore } from 'tests/__mocks__/store'
    import { userChallengeData } from 'tests/__mocks__/userChallengeData.mock'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import QuizBegin from './QuizBegin'
    
    Yoan VALLET's avatar
    Yoan VALLET committed
    
    const mockUserChallengeUpdateFlag = jest.fn()
    jest.mock('services/challenge.service', () => {
    
      return jest.fn(() => ({
        updateUserChallenge: mockUserChallengeUpdateFlag,
      }))
    
    Yoan VALLET's avatar
    Yoan VALLET committed
    })
    
    describe('QuizBegin component', () => {
    
      it('should be rendered correctly and launch quiz', async () => {
        mockUserChallengeUpdateFlag.mockResolvedValueOnce(userChallengeData[0])
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const store = createMockEcolyoStore()
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const { container } = render(
    
    Yoan VALLET's avatar
    Yoan VALLET committed
          <Provider store={store}>
            <QuizBegin userChallenge={userChallengeData[0]} />
          </Provider>
        )
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        expect(container.getElementsByClassName('quiz-icon')[0]).toBeInTheDocument()
    
        await userEvent.click(screen.getByText('duel.button_start'))
    
    Yoan VALLET's avatar
    Yoan VALLET committed
        expect(mockUserChallengeUpdateFlag).toHaveBeenCalledWith(
          userChallengeData[0],
          UserChallengeUpdateFlag.QUIZ_START
        )
      })
    })