| 12345678910111213141516171819202122232425262728293031 |
- /* eslint-env jest */
- import router from '@/router'
- import usersInfo from '@/utils/usersInfo'
- import { guestPaths, guestRoutes } from '@/ui-refactor/views/guest-shop/routes'
- import '@/permission'
- jest.mock('@/router', () => ({ beforeEach: jest.fn(), afterEach: jest.fn(), resetRouter: jest.fn() }))
- jest.mock('@/store', () => ({ dispatch: jest.fn() }))
- jest.mock('@/utils/usersInfo', () => ({ hasLogin: () => false }))
- jest.mock('@/utils/get-page-title', () => title => title || '')
- jest.mock('nprogress', () => ({ configure: jest.fn(), start: jest.fn(), done: jest.fn() }))
- jest.mock('nprogress/nprogress.css', () => ({}))
- const guard = router.beforeEach.mock.calls[0][0]
- it.each(guestPaths)('allows the exact public route %s without login', async path => {
- expect(usersInfo.hasLogin()).toBe(false)
- const next = jest.fn()
- await guard({ path, meta: {}}, {}, next)
- expect(next).toHaveBeenCalledWith()
- })
- it.each(['/dashboard/cart', '/dashboard/checkout', '/shop/member-order', '/guest-shop/ng/private', '/guest-shop/xx'])('continues to protect %s', async path => {
- const next = jest.fn()
- await guard({ path, meta: {}}, {}, next)
- expect(next).toHaveBeenCalledWith('/login?redirect=' + path)
- })
- it('hides the header on every guest route and sets country-specific catalog heroes only', () => {
- expect(guestPaths).toHaveLength(7)
- guestRoutes.forEach(route => expect(route.meta.publicLayout.showHeader).toBe(false))
- const hero = guestRoutes.find(route => route.path === '/guest-shop/ae').meta.publicLayout.hero
- expect(hero.titleParts.map(part => part.text).join('')).toBe('Shop Elken UAE.')
- expect(guestRoutes.find(route => route.path.endsWith('/cart')).meta.publicLayout.hero).toBeUndefined()
- })
|