q42-cms-components
Version:
66 lines (58 loc) • 1.84 kB
JavaScript
/* 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();
});
});
});