UNPKG

q42-cms-components

Version:

66 lines (58 loc) 1.84 kB
/* global describe, it, expect, spyOn */ import { pageStore } from './page-store.js'; describe('Page store', function() { it('should parse flat page list to a tree', function() { var flatPages = [{ name: 'page1', id: 1 }, { name: 'page2', id: 2 }, { name: 'subpage1', id: 3, parentId: 1 }, { name: 'subsubpage1', id: 4, parentId: 3 }]; var pageTree = pageStore.parsePageTree(flatPages); expect(pageTree[0].name).toBe(flatPages[0].name); expect(pageTree[0].children.length).toBe(1); expect(pageTree[0].children[0].children.length).toBe(1); expect(pageTree[0].children[0].name).toBe('subpage1'); expect(pageTree[0].children[0].children[0].name).toBe('subsubpage1'); }); it('should not break when parsing an empty page list to a tree', function() { var pageTree = pageStore.parsePageTree([]); expect(pageTree.length).toBe(0); }); it('should sort a page tree by name, but keeping parent pages on top', function(done) { var promiseFn = function() { return new Promise(function(resolve) { resolve({ json: function() { return [ {name: 'page1',id: 1}, {name: 'hallopage1', id: 2}, {name: 'page2', id: 3}, {name: 'subpage1', id: 4, parentId: 3}, ]; } }); }); }; spyOn(window, 'fetch').and.callFake(promiseFn); pageStore.getPageTree().then(function(pageTree) { expect(pageTree.length).toBe(3); expect(pageTree[0].name).toBe('page2'); expect(pageTree[1].name).toBe('hallopage1'); expect(pageTree[2].name).toBe('page1'); done(); }); }); });