opening-home.spec.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. import { OverviewsDocument } from '@shared/entities/ticket/graphql/queries/overviews.api'
  3. import { visitView } from '@tests/support/components/visitView'
  4. import { mockAccount } from '@tests/support/mock-account'
  5. import createMockClient from '@tests/support/mock-apollo-client'
  6. import { mockPermissions } from '@tests/support/mock-permissions'
  7. import { flushPromises } from '@vue/test-utils'
  8. import { getTicketOverviewStorage } from '../helpers/ticketOverviewStorage'
  9. import { getApiTicketOverviews } from './mocks'
  10. describe('home page', () => {
  11. beforeEach(() => {
  12. mockAccount({ id: '666' })
  13. createMockClient([
  14. {
  15. operationDocument: OverviewsDocument,
  16. handler: async () => ({ data: getApiTicketOverviews() }),
  17. },
  18. ])
  19. })
  20. test('renders ticket overviews based on localStorage', async () => {
  21. mockPermissions(['ticket.agent', 'ticket.customer'])
  22. const { saveOverviews } = getTicketOverviewStorage()
  23. saveOverviews(['3', '2'])
  24. const view = await visitView('/')
  25. expect(view.getIconByName('loader')).toBeInTheDocument()
  26. expect(view.getByRole('link', { name: /Edit/ })).toHaveAttribute(
  27. 'href',
  28. '/favorite/ticker-overviews/edit',
  29. )
  30. const overviews = await view.findAllByText(/^Overview/)
  31. expect(overviews).toHaveLength(2)
  32. expect(overviews[0]).toHaveTextContent('Overview 3')
  33. expect(overviews[1]).toHaveTextContent('Overview 2')
  34. mockPermissions([])
  35. await flushPromises()
  36. expect(
  37. view.queryByRole('link', { name: /Edit/ }),
  38. "doesn't have link when account doesn't have rights",
  39. ).not.toBeInTheDocument()
  40. })
  41. })