spec/frontend/shared/toc/flatten_items_spec.js (31 lines of code) (raw):

import { flattenItems } from '../../../../content/frontend/shared/toc/flatten_items'; describe('shared/toc/flatten_items', () => { const createItem = (text, ...items) => ({ text, items }); const createItemWithLevel = (text, level) => ({ text, level }); it.each` desc | items | expected ${'empty'} | ${[]} | ${[]} ${'single item'} | ${[createItem('a')]} | ${[createItemWithLevel('a', 0)]} ${'single item with child'} | ${[createItem('a', createItem('a1'))]} | ${[createItemWithLevel('a', 0), createItemWithLevel('a1', 1)]} `('with items is $desc and level=$level', ({ items, expected }) => { expect(flattenItems(items)).toEqual(expected); }); it('with multiple items', () => { const items = [ createItem('a', createItem('a1')), createItem('b'), createItem('c', createItem('c1'), createItem('c2', createItem('c21')), createItem('c3')), ]; const expectedItems = [ createItemWithLevel('a', 1), createItemWithLevel('a1', 2), createItemWithLevel('b', 1), createItemWithLevel('c', 1), createItemWithLevel('c1', 2), createItemWithLevel('c2', 2), createItemWithLevel('c21', 3), createItemWithLevel('c3', 2), ]; expect(flattenItems(items, 1)).toEqual(expectedItems); }); });