Skip to content
Snippets Groups Projects
QuizView.spec.tsx 3.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • Bastien DUMONT's avatar
    Bastien DUMONT committed
    import { render } from '@testing-library/react'
    
    Yoan VALLET's avatar
    Yoan VALLET committed
    import QuizView from 'components/Quiz/QuizView'
    
    import { UserQuizState } from 'enums'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import { ChallengeState } from 'models'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import React from 'react'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import { Provider } from 'react-redux'
    
    import { challengeStateData } from 'tests/__mocks__/challengeStateData.mock'
    import { createMockEcolyoStore, mockGlobalState } from 'tests/__mocks__/store'
    import { userChallengeData } from 'tests/__mocks__/userChallengeData.mock'
    
    Yoan VALLET's avatar
    Yoan VALLET committed
    
    
    jest.mock('components/Header/CozyBar', () => 'mock-cozybar')
    jest.mock('components/Header/Header', () => 'mock-header')
    jest.mock('components/Content/Content', () => 'mock-content')
    
    Yoan VALLET's avatar
    Yoan VALLET committed
    
    describe('QuizView component', () => {
      it('should be rendered with QuizBegin component when quiz state = unlocked', () => {
        const updatedUserChallenge = {
          ...userChallengeData[0],
          quiz: { ...userChallengeData[0].quiz, state: UserQuizState.UNLOCKED },
        }
        const updatedChallengeState = {
          ...challengeStateData,
          currentChallenge: updatedUserChallenge,
        }
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const store = createMockEcolyoStore({
          challenge: updatedChallengeState,
          global: mockGlobalState,
        })
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const { container } = render(
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
          <Provider store={store}>
            <QuizView />
          </Provider>
        )
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        expect(
          container.getElementsByClassName('quiz-begin-container')[0]
        ).toBeInTheDocument()
    
    Yoan VALLET's avatar
    Yoan VALLET committed
      })
    
      it('should be rendered with QuizQuestion component when quiz state = ongoing', () => {
        const updatedUserChallenge = {
          ...userChallengeData[0],
          quiz: { ...userChallengeData[0].quiz, state: UserQuizState.ONGOING },
        }
        const updatedChallengeState = {
          ...challengeStateData,
          currentChallenge: updatedUserChallenge,
        }
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const store = createMockEcolyoStore({
          challenge: updatedChallengeState,
          global: mockGlobalState,
        })
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const { container } = render(
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
          <Provider store={store}>
            <QuizView />
          </Provider>
        )
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        expect(
          container.getElementsByClassName('question-container')[0]
        ).toBeInTheDocument()
    
    Yoan VALLET's avatar
    Yoan VALLET committed
      })
    
      it('should be rendered with QuizFinish component when quiz state = done', () => {
        const updatedUserChallenge = {
          ...userChallengeData[0],
          quiz: { ...userChallengeData[0].quiz, state: UserQuizState.DONE },
        }
        const updatedChallengeState = {
          ...challengeStateData,
          currentChallenge: updatedUserChallenge,
        }
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const store = createMockEcolyoStore({
          challenge: updatedChallengeState,
          global: mockGlobalState,
        })
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const { container } = render(
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
          <Provider store={store}>
            <QuizView />
          </Provider>
        )
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        expect(
          container.getElementsByClassName('quiz-finish-container')[0]
        ).toBeInTheDocument()
    
    Yoan VALLET's avatar
    Yoan VALLET committed
      })
    
      it('should be rendered with QuizBegin component when quiz state = null', () => {
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const updatedChallengeState: ChallengeState = {
    
    Yoan VALLET's avatar
    Yoan VALLET committed
          ...challengeStateData,
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
          currentChallenge: {
            ...userChallengeData[0],
            quiz: { ...userChallengeData[0].quiz, state: UserQuizState.UNLOCKED },
          },
    
    Yoan VALLET's avatar
    Yoan VALLET committed
        }
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const store = createMockEcolyoStore({
          challenge: updatedChallengeState,
          global: mockGlobalState,
        })
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        const { container } = render(
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
          <Provider store={store}>
            <QuizView />
          </Provider>
        )
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        expect(
          container.getElementsByClassName('quiz-begin-container')[0]
        ).toBeInTheDocument()
    
    Yoan VALLET's avatar
    Yoan VALLET committed
      })
    })