Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/shared/toc/flatten_items_spec.js')
-rw-r--r--spec/frontend/shared/toc/flatten_items_spec.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/frontend/shared/toc/flatten_items_spec.js b/spec/frontend/shared/toc/flatten_items_spec.js
new file mode 100644
index 00000000..b5965d31
--- /dev/null
+++ b/spec/frontend/shared/toc/flatten_items_spec.js
@@ -0,0 +1,36 @@
+import { flattenItems } from '../../../../content/frontend/shared/toc/flatten_items';
+
+describe('shared/toc/flatten_items', () => {
+ const createItem = (text, ...items) => Object.assign({ text }, items ? { 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);
+ });
+});