All Downloads are FREE. Search and download functionalities are using the official Maven repository.

plugins.Menu.helpers.test.js Maven / Gradle / Ivy

The newest version!
import isEmpty from 'lodash/isEmpty'

import { getMatchingSidebar } from './helpers'

const sidebarWithoutPath = {
    className: '',
    defaultState: 'maxi',
    extraMenu: {},
    logo: { title: 'N2O', href: '/' },
    menu: { items: Array(0) },
    overlay: false,
    side: 'left',
    src: 'Sidebar',
    toggleOnHover: false,
    toggledState: 'mini',
}

const sidebarWithSpecifiedPath = {
    className: '',
    defaultState: 'maxi',
    extraMenu: {},
    logo: { title: 'Получатель услуг', href: '/' },
    menu: {},
    overlay: false,
    path: '/person',
    side: 'left',
    src: 'Sidebar',
    subtitle: '{name}',
    toggleOnHover: false,
    toggledState: 'mini',
}

const sidebarWithAsteriskPath = {
    className: '',
    defaultState: 'maxi',
    extraMenu: {},
    logo: { title: 'N2O', href: '/' },
    menu: { items: Array(0) },
    overlay: false,
    path: '/*',
    side: 'left',
    src: 'Sidebar',
    toggleOnHover: false,
    toggledState: 'mini',
}

const sidebarWithComplexAsteriskPath = {
    className: '',
    defaultState: 'maxi',
    extraMenu: {},
    logo: { title: 'Получатель услуг', href: '/' },
    menu: { items: Array(0) },
    overlay: false,
    path: '/persons/*/list',
    side: 'left',
    src: 'Sidebar',
    toggleOnHover: false,
    toggledState: 'mini',
}

const sidebarWithDoubleAsteriskPath = {
    className: '',
    defaultState: 'maxi',
    extraMenu: {},
    logo: { title: 'Получатели', href: '/' },
    menu: { items: Array(0) },
    overlay: false,
    path: '/persons/**',
    side: 'left',
    src: 'Sidebar',
    toggleOnHover: false,
    toggledState: 'mini',
}

describe('getMatchingSidebar', () => {
    it('вернет sidebar, если он один', () => {
        expect(getMatchingSidebar([sidebarWithoutPath], '/person').logo.title).toEqual(sidebarWithoutPath.logo.title)
    })

    it('вернет sidebar с указанным path, если есть sidebar без path', () => {
        expect(getMatchingSidebar([sidebarWithoutPath, sidebarWithSpecifiedPath], '/person').logo.title).toEqual(
            sidebarWithSpecifiedPath.logo.title,
        )
    })

    it('вернет более релевантный sidebar, если есть несколько подходящих', () => {
        expect(getMatchingSidebar([sidebarWithSpecifiedPath, sidebarWithAsteriskPath], '/person').logo.title).toEqual(
            sidebarWithSpecifiedPath.logo.title,
        )
    })

    it('не вернет sidebar, если нет подходящего', () => {
        expect(isEmpty(getMatchingSidebar([sidebarWithSpecifiedPath], '/settings'))).toEqual(true)
    })

    it('вернет более релевантный sidebar в случае с динамическими путями', () => {
        expect(
            getMatchingSidebar([sidebarWithComplexAsteriskPath, sidebarWithDoubleAsteriskPath], '/persons/1/list').logo
                .title,
        ).toEqual(sidebarWithComplexAsteriskPath.logo.title)
    })

    it('не вернет sidebar, если в указано больше ресурсов, чем ожидается в пути', () => {
        expect(isEmpty(getMatchingSidebar([sidebarWithComplexAsteriskPath], '/persons/1/2/list'))).toEqual(true)
    })
})




© 2015 - 2024 Weber Informatics LLC | Privacy Policy