zammad/zammad

View on GitHub
app/frontend/apps/desktop/pages/guided-setup/__tests__/guided-setup-import-selection.spec.ts

Summary

Maintainability
B
4 hrs
Test Coverage
// Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/

import { mockApplicationConfig } from '#tests/support/mock-applicationConfig.ts'
import { visitView } from '#tests/support/components/visitView.ts'

import {
  EnumSystemSetupInfoStatus,
  EnumSystemSetupInfoType,
} from '#shared/graphql/types.ts'

import { mockSystemSetupInfoQuery } from '../graphql/queries/systemSetupInfo.mocks.ts'

describe('guided setup import selection', () => {
  describe('when system initialization is done', () => {
    beforeEach(() => {
      mockApplicationConfig({
        system_init_done: true,
      })
    })

    it('redirects to login window', async () => {
      const view = await visitView('/guided-setup/import')

      // Check that we ware on the login page
      expect(view.getByText('Username / Email')).toBeInTheDocument()
      expect(view.getByText('Password')).toBeInTheDocument()
      expect(view.getByText('Sign in')).toBeInTheDocument()
    })
  })

  describe('when system is not initialized', () => {
    beforeEach(() => {
      mockApplicationConfig({
        system_init_done: false,
      })
    })

    it('shows the selection and click on freshdesk', async () => {
      mockSystemSetupInfoQuery({
        systemSetupInfo: {
          status: EnumSystemSetupInfoStatus.InProgress,
          type: EnumSystemSetupInfoType.Import,
        },
      })

      const view = await visitView('/guided-setup/import')

      expect(
        view.getByRole('button', { name: 'Freshdesk Beta' }),
      ).toBeInTheDocument()
      expect(
        view.getByRole('button', { name: 'Kayako Beta' }),
      ).toBeInTheDocument()
      expect(
        view.getByRole('button', { name: 'OTRS Beta' }),
      ).toBeInTheDocument()
      expect(
        view.getByRole('button', { name: 'Zendesk Beta' }),
      ).toBeInTheDocument()
      expect(view.getByRole('button', { name: 'Go Back' })).toBeInTheDocument()

      const importSourceButton = view.getByRole('button', {
        name: 'Freshdesk Beta',
      })

      await view.events.click(importSourceButton)

      await vi.waitFor(() => {
        expect(
          view,
          'correctly redirects to guided setup import source freshdesk',
        ).toHaveCurrentUrl('/guided-setup/import/freshdesk')
      })
    })
  })
})