import { getSidebar, hasActiveLink } from 'client/theme-default/support/sidebar' describe('client/theme-default/support/sidebar', () => { describe('getSidebar', () => { const root = [ { text: 'A', collapsible: true, items: [{ text: 'A', link: '' }] }, { text: 'B', items: [{ text: 'B', link: '' }] } ] const another = [ { text: 'C', items: [{ text: 'C', link: '' }] } ] describe('normal sidebar sort', () => { const normalSidebar = { '/': root, '/multi-sidebar/': another } test('gets `/` sidebar', () => { expect(getSidebar(normalSidebar, '/')).toStrictEqual(root) }) test('gets `/multi-sidebar/` sidebar', () => { expect(getSidebar(normalSidebar, '/multi-sidebar/')).toStrictEqual( another ) }) test('gets `/` sidebar again', () => { expect(getSidebar(normalSidebar, '/some-entry.html')).toStrictEqual( root ) }) }) describe('reversed sidebar sort', () => { const reversedSidebar = { '/multi-sidebar/': another, '/': root } test('gets `/` sidebar', () => { expect(getSidebar(reversedSidebar, '/')).toStrictEqual(root) }) test('gets `/multi-sidebar/` sidebar', () => { expect(getSidebar(reversedSidebar, '/multi-sidebar/')).toStrictEqual( another ) }) test('gets `/` sidebar again', () => { expect(getSidebar(reversedSidebar, '/some-entry.html')).toStrictEqual( root ) }) }) describe('nested sidebar sort', () => { const nested = [ { text: 'D', items: [{ text: 'D', link: '' }] } ] const nestedSidebar = { '/': root, '/multi-sidebar/': another, '/multi-sidebar/nested/': nested } test('gets `/` sidebar', () => { expect(getSidebar(nestedSidebar, '/')).toStrictEqual(root) }) test('gets `/multi-sidebar/` sidebar', () => { expect(getSidebar(nestedSidebar, '/multi-sidebar/')).toStrictEqual( another ) }) test('gets `/multi-sidebar/nested/` sidebar', () => { expect( getSidebar(nestedSidebar, '/multi-sidebar/nested/') ).toStrictEqual(nested) }) test('gets `/` sidebar again', () => { expect(getSidebar(nestedSidebar, '/some-entry.html')).toStrictEqual( root ) }) }) }) describe('hasActiveLink', () => { test('checks `SidebarItem`', () => { const item = { text: 'Item 001', items: [ { text: 'Item 001', link: '/active-1' }, { text: 'Item 002', link: '/active-2' } ] } expect(hasActiveLink('active-1', item)).toBe(true) expect(hasActiveLink('inactive', item)).toBe(false) }) test('checks `SidebarItem[]`', () => { const item = [ { text: 'Item 001', items: [ { text: 'Item 001', link: '/active-1' }, { text: 'Item 002', link: '/active-2' } ] }, { text: 'Item 002', items: [ { text: 'Item 003', link: '/active-3' }, { text: 'Item 004', link: '/active-4' } ] } ] expect(hasActiveLink('active-1', item)).toBe(true) expect(hasActiveLink('active-3', item)).toBe(true) expect(hasActiveLink('inactive', item)).toBe(false) }) }) })