zammad/zammad

View on GitHub
app/frontend/apps/mobile/router/guards/before/__test__/viewTransition.spec.ts

Summary

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

import { useViewTransition } from '#mobile/components/transition/TransitionViewNavigation/useViewTransition.ts'

import viewTransition from '../viewTransition.ts'

import type { RouteLocationNormalized } from 'vue-router'

const getViewTransition = () => {
  const { viewTransition } = useViewTransition()

  return viewTransition.value
}

describe('viewTransition', () => {
  it('should have replace as view transition, because one is the default level (and from has no level)', () => {
    const from = {} as RouteLocationNormalized
    const to = {
      meta: {
        level: 1,
      },
    } as RouteLocationNormalized
    const next = vi.fn()

    viewTransition(to, from, next)

    expect(getViewTransition()).toEqual('replace')
  })

  it('should have next as view transition', () => {
    const from = {
      meta: {
        level: 1,
      },
    } as RouteLocationNormalized
    const to = {
      meta: {
        level: 2,
      },
    } as RouteLocationNormalized
    const next = vi.fn()

    viewTransition(to, from, next)

    expect(getViewTransition()).toEqual('next')
  })

  it('should have prev as view transition', () => {
    const from = {
      meta: {
        level: 2,
      },
    } as RouteLocationNormalized
    const to = {
      meta: {
        level: 1,
      },
    } as RouteLocationNormalized
    const next = vi.fn()

    viewTransition(to, from, next)

    expect(getViewTransition()).toEqual('prev')
  })

  it('should have replace for not existing level on target route', () => {
    const from = {
      meta: {
        level: 2,
      },
    } as RouteLocationNormalized
    const to = {
      meta: {},
    } as RouteLocationNormalized
    const next = vi.fn()

    viewTransition(to, from, next)

    expect(getViewTransition()).toEqual('replace')
  })
})