Skip to content
Snippets Groups Projects
Select Git revision
  • 7fcbb3823873a77f772c3435defc987ca7d62ce1
  • dev default protected
  • renovate/cozy-realtime-5.x
  • renovate/copy-webpack-plugin-13.x
  • renovate/devdependencies-(non-major)
  • renovate/major-react-monorepo
  • renovate/couchdb-3.x
  • renovate/cozy-device-helper-3.x
  • renovate/cozy-flags-4.x
  • renovate/eslint-config-prettier-10.x
  • renovate/major-react-router-monorepo
  • renovate/major-typescript-eslint-monorepo
  • renovate/sass-loader-16.x
  • renovate/eslint-plugin-testing-library-7.x
  • renovate/cozy-scripts-8.x
  • renovate/cozy-harvest-lib-9.x
  • renovate/cozy-client-49.x
  • build-test protected
  • build-dev protected
  • lint/testing-libraby-plugin
  • build protected
  • v3.1.1
  • v3.1.0
  • v3.0.0
  • v2.8.0
  • v2.7.2
  • v2.7.1
  • v2.7.0
  • v2.6.0
  • v2.5.1
  • v2.5.0
  • v2.4.0
  • v2.3.1
  • v2.3.0
  • v2.2.2
  • v2.2.1
  • v2.2.0
  • v2.1.1
  • v2.1.0
  • v2.0.2
  • v2.0.1
41 results

SingleFluidViewContainer.tsx

Blame
  • ChallengeCardUnlocked.spec.tsx NaN GiB
    import { act, render, screen } from '@testing-library/react'
    import { userEvent } from '@testing-library/user-event'
    import { FluidState, FluidType } from 'enums'
    import React from 'react'
    import { Provider } from 'react-redux'
    import {
      createMockEcolyoStore,
      mockChallengeState,
      mockGlobalState,
    } from 'tests/__mocks__/store'
    import { userChallengeData } from 'tests/__mocks__/userChallengeData.mock'
    import ChallengeCardUnlocked from './ChallengeCardUnlocked'
    
    const mockStartUserChallenge = jest.fn()
    jest.mock('services/challenge.service', () => {
      return jest.fn(() => ({
        startUserChallenge: mockStartUserChallenge,
      }))
    })
    
    describe('ChallengeCardUnlocked component', () => {
      const store = createMockEcolyoStore()
      it('should be rendered correctly', () => {
        render(
          <Provider store={store}>
            <ChallengeCardUnlocked userChallenge={userChallengeData[0]} />
          </Provider>
        )
        expect(screen.getByText('Simone VEILLE')).toBeInTheDocument()
        expect(
          screen.getByText('challenge.card_unlocked.button_launch')
        ).toBeInTheDocument()
        expect(screen.queryAllByRole('dialog').length).toBeFalsy()
      })
    
      it('should display ChallengeNoFluidModal when launching challenge without configured fluid', async () => {
        render(
          <Provider store={store}>
            <ChallengeCardUnlocked userChallenge={userChallengeData[0]} />
          </Provider>
        )
        await act(async () => {
          await userEvent.click(
            screen.getByText('challenge.card_unlocked.button_launch')
          )
        })
        expect(screen.getByRole('dialog')).toBeInTheDocument()
      })
    
      it('should not display ChallengeNoFluidModal and update userChallenge when launching challenge with configured fluid', async () => {
        mockStartUserChallenge.mockResolvedValue(userChallengeData[0])
        const store = createMockEcolyoStore({
          global: {
            ...mockGlobalState,
            fluidTypes: [FluidType.ELECTRICITY],
            fluidStatus: [
              { ...mockGlobalState.fluidStatus[0], status: FluidState.DONE },
            ],
          },
          challenge: mockChallengeState,
        })
        render(
          <Provider store={store}>
            <ChallengeCardUnlocked userChallenge={userChallengeData[0]} />
          </Provider>
        )
        await act(async () => {
          await userEvent.click(
            screen.getByText('challenge.card_unlocked.button_launch')
          )
        })
        expect(screen.queryAllByRole('dialog').length).toBeFalsy()
        expect(mockStartUserChallenge).toHaveBeenCalledWith(userChallengeData[0])
      })
    
      it('should not be able to launch challenge if another one is active', () => {
        mockStartUserChallenge.mockResolvedValue(userChallengeData[0])
        const store = createMockEcolyoStore({
          global: mockGlobalState,
          challenge: {
            ...mockChallengeState,
            currentChallenge: userChallengeData[1],
          },
        })
        render(
          <Provider store={store}>
            <ChallengeCardUnlocked userChallenge={userChallengeData[0]} />
          </Provider>
        )
        const launchBtn = screen.getByLabelText(
          'challenge.accessibility.button_launch'
        )
        expect(launchBtn).toHaveAttribute('disabled')
      })
    })