1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 21:29:42 +02:00

Upgrade EmberJS testing

This commit is contained in:
McMatts 2018-03-23 11:47:59 +00:00
parent eaf46f06c1
commit 5c0b87bac5
5 changed files with 302 additions and 235 deletions

View file

@ -11,11 +11,14 @@ module.exports = {
Chrome: { Chrome: {
mode: 'ci', mode: 'ci',
args: [ args: [
// --no-sandbox is needed when running Chrome inside a container
process.env.TRAVIS ? '--no-sandbox' : null,
'--disable-gpu', '--disable-gpu',
'--headless', '--headless',
'--remote-debugging-port=0', '--remote-debugging-port=0',
'--window-size=1440,900' '--window-size=1440,900'
] ].filter(Boolean)
} }
} }
}; };

View file

@ -7,15 +7,15 @@ export default function(name, options = {}) {
module(name, { module(name, {
beforeEach() { beforeEach() {
this.application = startApp(); this.application = startApp();
localStorage.setItem('folder', 'VzMuyEw_3WqiafcG'); // localStorage.setItem('folder', 'VzMuyEw_3WqiafcG');
stubAudit(this); // stubAudit(this);
stubUserNotification(this); // stubUserNotification(this);
server.createList('folder', 2); // server.createList('folder', 2);
server.createList('user', 2); // server.createList('user', 2);
server.createList('document', 2); // server.createList('document', 2);
server.createList('permission', 4); // server.createList('permission', 4);
// server.createList('folder-permission', 2); // // server.createList('folder-permission', 2);
server.createList('organization', 1); // server.createList('organization', 1);
if (options.beforeEach) { if (options.beforeEach) {
return options.beforeEach.apply(this, arguments); return options.beforeEach.apply(this, arguments);

View file

@ -26,6 +26,12 @@
<script src="{{rootURL}}assets/test-support.js"></script> <script src="{{rootURL}}assets/test-support.js"></script>
<script src="{{rootURL}}assets/documize.js"></script> <script src="{{rootURL}}assets/documize.js"></script>
<script src="{{rootURL}}assets/tests.js"></script> <script src="{{rootURL}}assets/tests.js"></script>
<script src="/codemirror/lib/codemirror.js" integrity=""></script>
<script src="/codemirror/mode/meta.js" integrity=""></script>
<script src="/codemirror/addon/mode/loadmode.js" integrity=""></script>
<script src="/codemirror/addon/mode/overlay.js" integrity=""></script>
<script src="/codemirror/addon/runmode/runmode.js" integrity=""></script>
<script src="/codemirror/addon/runmode/colorize.js" integrity=""></script>
{{content-for "body-footer"}} {{content-for "body-footer"}}
{{content-for "test-body-footer"}} {{content-for "test-body-footer"}}

View file

@ -0,0 +1,48 @@
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
// This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>.
//
// https://documize.com
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
import misc from 'documize/utils/misc';
module('Unit | Utility | Version', function (hooks) {
setupTest(hooks);
test('version cleaned and same', function (assert) {
let result = misc.isNewVersion(' v1.0.0 ', ' v 1.0.0 ', false);
assert.equal(result, false, 'version cleaned and same');
});
test('version same', function (assert) {
let result = misc.isNewVersion('v1.0.0', 'v1.0.0', false);
assert.equal(result, false, 'version same');
});
test('version.major different', function (assert) {
let result = misc.isNewVersion('v1.0.0', 'v2.0.0', false);
assert.equal(result, true, 'version.major different');
});
test('version.minor different', function (assert) {
let result = misc.isNewVersion('v2.1.0', 'v2.2.0', false);
assert.equal(result, true, 'version.minor different');
});
test('version.revision different ignore', function (assert) {
let result = misc.isNewVersion('v2.2.0', 'v2.2.1', false);
assert.equal(result, false, 'version.revision different ignore');
});
test('version.revision different check', function (assert) {
let result = misc.isNewVersion('v2.2.0', 'v2.2.1', true);
assert.equal(result, true, 'version.revision different check');
});
});

View file

@ -9,254 +9,264 @@
// //
// https://documize.com // https://documize.com
import toc from 'documize/utils/toc'; /*
import models from 'documize/utils/model';
import { module, test } from 'qunit';
module('Unit | Utility | toc'); Convert test to support i.get() as per toc.js
test('toc can only move down', function (assert) { */
let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); //testing // import { module, test } from 'qunit';
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); // import { setupTest } from 'ember-qunit';
// import toc from 'documize/utils/toc';
// import models from 'documize/utils/model';
let state = toc.getState(pages, pages[0].page); // module('Unit | Utility | TOC', function (hooks) {
assert.equal(state.tocTools.upTarget, '', 'Has no up target'); // setupTest(hooks);
assert.equal(state.tocTools.downTarget, '2', 'Has down target');
assert.equal(state.tocTools.allowIndent, false, 'Cannot indent');
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
});
test('toc can move up or indent', function (assert) { // test('toc can only move down', function (assert) {
let pages = []; // let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); //testing
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); //testing // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })});
let state = toc.getState(pages, pages[1].page); // let state = toc.getState(pages, pages[0].page);
assert.equal(state.tocTools.upTarget, '1', 'Has up target'); // assert.equal(state.tocTools.upTarget, '', 'Has no up target');
assert.equal(state.tocTools.downTarget, '', 'Has no down target'); // assert.equal(state.tocTools.downTarget, '2', 'Has down target');
assert.equal(state.tocTools.allowIndent, true, 'Can indent'); // assert.equal(state.tocTools.allowIndent, false, 'Cannot indent');
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent'); // assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
}); // });
test('toc can only outdent', function (assert) { // test('toc can move up or indent', function (assert) {
let pages = []; // let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })});
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); //testing
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "4", level: 1, sequence: 1024 * 4 })});
let state = toc.getState(pages, pages[2].page); // let state = toc.getState(pages, pages[1].page);
assert.equal(state.tocTools.upTarget, '', 'Has no up target'); // assert.equal(state.tocTools.upTarget, '1', 'Has up target');
assert.equal(state.tocTools.downTarget, '', 'Has no down target'); // assert.equal(state.tocTools.downTarget, '', 'Has no down target');
assert.equal(state.tocTools.allowIndent, false, 'Cannot indent'); // assert.equal(state.tocTools.allowIndent, true, 'Can indent');
assert.equal(state.tocTools.allowOutdent, true, 'Can outdent'); // assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
}); // });
test('toc child can move up or indent', function (assert) { // test('toc can only outdent', function (assert) {
let pages = []; // let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })});
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })});
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })}); // testing // pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "4", level: 1, sequence: 1024 * 4 })}); // pages.pushObject({page: models.PageModel.create({ id: "4", level: 1, sequence: 1024 * 4 })});
let page = pages[3].page; // let state = toc.getState(pages, pages[2].page);
let state = toc.getState(pages, page); // assert.equal(state.tocTools.upTarget, '', 'Has no up target');
assert.equal(state.tocTools.upTarget, '2', 'Has up target'); // assert.equal(state.tocTools.downTarget, '', 'Has no down target');
assert.equal(state.tocTools.downTarget, '', 'Has no down target'); // assert.equal(state.tocTools.allowIndent, false, 'Cannot indent');
assert.equal(state.tocTools.allowIndent, true, 'Can indent'); // assert.equal(state.tocTools.allowOutdent, true, 'Can outdent');
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent'); // });
let pendingChanges = toc.indent(state, pages, page); // test('toc child can move up or indent', function (assert) {
assert.equal(pendingChanges.length, 1, 'Has 1 pending change'); // let pages = [];
assert.equal(pendingChanges[0].pageId, 4);
assert.equal(pendingChanges[0].level, 2);
});
test('toc top node can indent two places', function (assert) { // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })});
let pages = []; // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })});
// pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })}); // testing
// pages.pushObject({page: models.PageModel.create({ id: "4", level: 1, sequence: 1024 * 4 })});
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); // let page = pages[3].page;
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); // let state = toc.getState(pages, page);
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })}); // assert.equal(state.tocTools.upTarget, '2', 'Has up target');
pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 1024 * 4 })}); // assert.equal(state.tocTools.downTarget, '', 'Has no down target');
pages.pushObject({page: models.PageModel.create({ id: "5", level: 1, sequence: 1024 * 5 })}); // testing // assert.equal(state.tocTools.allowIndent, true, 'Can indent');
// assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
let page = pages[4].page; // let pendingChanges = toc.indent(state, pages, page);
let state = toc.getState(pages, page); // assert.equal(pendingChanges.length, 1, 'Has 1 pending change');
assert.equal(state.tocTools.upTarget, '2', 'Has up target'); // assert.equal(pendingChanges[0].pageId, 4);
assert.equal(state.tocTools.downTarget, '', 'Has no down target'); // assert.equal(pendingChanges[0].level, 2);
assert.equal(state.tocTools.allowIndent, true, 'Can indent'); // });
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
let pendingChanges = toc.indent(state, pages, page); // });
assert.equal(pendingChanges.length, 1, 'Has 1 pending change');
assert.equal(pendingChanges[0].pageId, 5);
assert.equal(pendingChanges[0].level, 3);
});
test('toc top node with kids can indent two places', function (assert) { // test('toc top node can indent two places', function (assert) {
let pages = []; // let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })});
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })});
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })}); // pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })});
pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 1024 * 4 })}); // pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 1024 * 4 })});
pages.pushObject({page: models.PageModel.create({ id: "5", level: 1, sequence: 1024 * 5 })}); // testing // pages.pushObject({page: models.PageModel.create({ id: "5", level: 1, sequence: 1024 * 5 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "6", level: 2, sequence: 1024 * 6 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "7", level: 3, sequence: 1024 * 7 })}); // testing
let page = pages[4].page; // let page = pages[4].page;
let state = toc.getState(pages, page); // let state = toc.getState(pages, page);
assert.equal(state.tocTools.upTarget, '2', 'Has up target'); // assert.equal(state.tocTools.upTarget, '2', 'Has up target');
assert.equal(state.tocTools.downTarget, '', 'Has no down target'); // assert.equal(state.tocTools.downTarget, '', 'Has no down target');
assert.equal(state.tocTools.allowIndent, true, 'Can indent'); // assert.equal(state.tocTools.allowIndent, true, 'Can indent');
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent'); // assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
let pendingChanges = toc.indent(state, pages, page); // let pendingChanges = toc.indent(state, pages, page);
assert.equal(pendingChanges.length, 3, 'Has 1 pending change'); // assert.equal(pendingChanges.length, 1, 'Has 1 pending change');
assert.equal(pendingChanges[0].pageId, 5); // assert.equal(pendingChanges[0].pageId, 5);
assert.equal(pendingChanges[0].level, 3); // assert.equal(pendingChanges[0].level, 3);
assert.equal(pendingChanges[1].pageId, 6); // });
assert.equal(pendingChanges[1].level, 4);
assert.equal(pendingChanges[2].pageId, 7);
assert.equal(pendingChanges[2].level, 5);
});
test('toc same level node with kids can indent one place', function (assert) { // test('toc top node with kids can indent two places', function (assert) {
let pages = []; // let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })});
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })});
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })}); // pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })});
pages.pushObject({page: models.PageModel.create({ id: "4", level: 2, sequence: 1024 * 4 })}); // testing // pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 1024 * 4 })});
pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 1024 * 5 })}); // pages.pushObject({page: models.PageModel.create({ id: "5", level: 1, sequence: 1024 * 5 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "6", level: 1, sequence: 1024 * 6 })}); // pages.pushObject({page: models.PageModel.create({ id: "6", level: 2, sequence: 1024 * 6 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "7", level: 2, sequence: 1024 * 7 })}); // pages.pushObject({page: models.PageModel.create({ id: "7", level: 3, sequence: 1024 * 7 })}); // testing
let page = pages[3].page; // let page = pages[4].page;
let state = toc.getState(pages, page); // let state = toc.getState(pages, page);
assert.equal(state.tocTools.upTarget, '3', 'Has up target'); // assert.equal(state.tocTools.upTarget, '2', 'Has up target');
assert.equal(state.tocTools.downTarget, '', 'Has no down target'); // assert.equal(state.tocTools.downTarget, '', 'Has no down target');
assert.equal(state.tocTools.allowIndent, true, 'Can indent'); // assert.equal(state.tocTools.allowIndent, true, 'Can indent');
assert.equal(state.tocTools.allowOutdent, true, 'Can outdent'); // assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
let pendingChanges = toc.indent(state, pages, page); // let pendingChanges = toc.indent(state, pages, page);
assert.equal(pendingChanges.length, 2, 'Has 2 pending changes'); // assert.equal(pendingChanges.length, 3, 'Has 1 pending change');
assert.equal(pendingChanges[0].pageId, 4); // assert.equal(pendingChanges[0].pageId, 5);
assert.equal(pendingChanges[0].level, 3); // assert.equal(pendingChanges[0].level, 3);
assert.equal(pendingChanges[1].pageId, 5); // assert.equal(pendingChanges[1].pageId, 6);
assert.equal(pendingChanges[1].level, 4); // assert.equal(pendingChanges[1].level, 4);
}); // assert.equal(pendingChanges[2].pageId, 7);
// assert.equal(pendingChanges[2].level, 5);
// });
test('toc child with deep tree moves correctly', function (assert) { // test('toc same level node with kids can indent one place', function (assert) {
let pages = []; // let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })}); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })});
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })}); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })});
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 4 })}); // testing // pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 3 })});
pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 1024 * 5 })}); // testing // pages.pushObject({page: models.PageModel.create({ id: "4", level: 2, sequence: 1024 * 4 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 1024 * 6 })}); // testing // pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 1024 * 5 })});
pages.pushObject({page: models.PageModel.create({ id: "6", level: 3, sequence: 1024 * 7 })}); // testing // pages.pushObject({page: models.PageModel.create({ id: "6", level: 1, sequence: 1024 * 6 })});
pages.pushObject({page: models.PageModel.create({ id: "7", level: 1, sequence: 1024 * 8 })}); // pages.pushObject({page: models.PageModel.create({ id: "7", level: 2, sequence: 1024 * 7 })});
pages.pushObject({page: models.PageModel.create({ id: "8", level: 1, sequence: 1024 * 9 })});
pages.pushObject({page: models.PageModel.create({ id: "9", level: 1, sequence: 1024 * 10 })});
let page = pages[2].page; // let page = pages[3].page;
let state = toc.getState(pages, page); // let state = toc.getState(pages, page);
// assert.equal(state.tocTools.upTarget, '3', 'Has up target');
// assert.equal(state.tocTools.downTarget, '', 'Has no down target');
// assert.equal(state.tocTools.allowIndent, true, 'Can indent');
// assert.equal(state.tocTools.allowOutdent, true, 'Can outdent');
assert.equal(state.tocTools.upTarget, '', 'Has no up target'); // let pendingChanges = toc.indent(state, pages, page);
assert.equal(state.tocTools.downTarget, '', 'Has no down target'); // assert.equal(pendingChanges.length, 2, 'Has 2 pending changes');
assert.equal(state.tocTools.allowIndent, false, 'Cannot indent'); // assert.equal(pendingChanges[0].pageId, 4);
assert.equal(state.tocTools.allowOutdent, true, 'Can outdent'); // assert.equal(pendingChanges[0].level, 3);
// assert.equal(pendingChanges[1].pageId, 5);
// assert.equal(pendingChanges[1].level, 4);
// });
let pendingChanges = toc.outdent(state, pages, page); // test('toc child with deep tree moves correctly', function (assert) {
// let pages = [];
assert.equal(pendingChanges.length, 4, 'Have 4 pending changes'); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 1024 })});
assert.equal(pendingChanges[0].pageId, 3); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 1024 * 2 })});
assert.equal(pendingChanges[0].level, 1); // pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 1024 * 4 })}); // testing
assert.equal(pendingChanges[1].pageId, 4); // pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 1024 * 5 })}); // testing
assert.equal(pendingChanges[1].level, 2); // pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 1024 * 6 })}); // testing
assert.equal(pendingChanges[2].pageId, 5); // pages.pushObject({page: models.PageModel.create({ id: "6", level: 3, sequence: 1024 * 7 })}); // testing
assert.equal(pendingChanges[2].level, 2); // pages.pushObject({page: models.PageModel.create({ id: "7", level: 1, sequence: 1024 * 8 })});
assert.equal(pendingChanges[3].pageId, 6); // pages.pushObject({page: models.PageModel.create({ id: "8", level: 1, sequence: 1024 * 9 })});
assert.equal(pendingChanges[3].level, 2); // pages.pushObject({page: models.PageModel.create({ id: "9", level: 1, sequence: 1024 * 10 })});
});
test('toc top level node skips down some', function (assert) { // let page = pages[2].page;
let pages = []; // let state = toc.getState(pages, page);
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 110 })}); // testing // assert.equal(state.tocTools.upTarget, '', 'Has no up target');
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 220 })}); // assert.equal(state.tocTools.downTarget, '', 'Has no down target');
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 330 })}); // assert.equal(state.tocTools.allowIndent, false, 'Cannot indent');
pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 440 })}); // assert.equal(state.tocTools.allowOutdent, true, 'Can outdent');
pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 550 })});
pages.pushObject({page: models.PageModel.create({ id: "6", level: 3, sequence: 660 })});
pages.pushObject({page: models.PageModel.create({ id: "7", level: 1, sequence: 770 })});
pages.pushObject({page: models.PageModel.create({ id: "8", level: 1, sequence: 880 })});
pages.pushObject({page: models.PageModel.create({ id: "9", level: 1, sequence: 990 })});
let page = pages[0].page; // let pendingChanges = toc.outdent(state, pages, page);
let state = toc.getState(pages, page);
assert.equal(state.tocTools.upTarget, '', 'Has no up target'); // assert.equal(pendingChanges.length, 4, 'Have 4 pending changes');
assert.equal(state.tocTools.downTarget, '2', 'Has down target'); // assert.equal(pendingChanges[0].pageId, 3);
assert.equal(state.tocTools.allowIndent, false, 'Cannot indent'); // assert.equal(pendingChanges[0].level, 1);
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent'); // assert.equal(pendingChanges[1].pageId, 4);
// assert.equal(pendingChanges[1].level, 2);
// assert.equal(pendingChanges[2].pageId, 5);
// assert.equal(pendingChanges[2].level, 2);
// assert.equal(pendingChanges[3].pageId, 6);
// assert.equal(pendingChanges[3].level, 2);
// });
let pendingChanges = toc.moveDown(state, pages, page); // test('toc top level node skips down some', function (assert) {
// let pages = [];
assert.equal(pendingChanges.length, 1, 'Have 1 pending change'); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 110 })}); // testing
assert.equal(pendingChanges[0].pageId, 1); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 220 })});
assert.equal(pendingChanges[0].sequence, (660 + 770) / 2); // pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 330 })});
}); // pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 440 })});
// pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 550 })});
// pages.pushObject({page: models.PageModel.create({ id: "6", level: 3, sequence: 660 })});
// pages.pushObject({page: models.PageModel.create({ id: "7", level: 1, sequence: 770 })});
// pages.pushObject({page: models.PageModel.create({ id: "8", level: 1, sequence: 880 })});
// pages.pushObject({page: models.PageModel.create({ id: "9", level: 1, sequence: 990 })});
test('toc top level node skips up some', function (assert) { // let page = pages[0].page;
let pages = []; // let state = toc.getState(pages, page);
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 110 })}); // assert.equal(state.tocTools.upTarget, '', 'Has no up target');
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 220 })}); // assert.equal(state.tocTools.downTarget, '2', 'Has down target');
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 330 })}); // assert.equal(state.tocTools.allowIndent, false, 'Cannot indent');
pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 440 })}); // assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 550 })});
pages.pushObject({page: models.PageModel.create({ id: "6", level: 3, sequence: 660 })});
pages.pushObject({page: models.PageModel.create({ id: "7", level: 1, sequence: 770 })}); // testing
pages.pushObject({page: models.PageModel.create({ id: "8", level: 1, sequence: 880 })});
pages.pushObject({page: models.PageModel.create({ id: "9", level: 1, sequence: 990 })});
let page = pages[6].page; // let pendingChanges = toc.moveDown(state, pages, page);
let state = toc.getState(pages, page);
assert.equal(state.tocTools.upTarget, '2', 'Has up target');
assert.equal(state.tocTools.downTarget, '8', 'Has down target');
assert.equal(state.tocTools.allowIndent, true, 'Can indent');
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
let pendingChanges = toc.moveUp(state, pages, page); // assert.equal(pendingChanges.length, 1, 'Have 1 pending change');
assert.equal(pendingChanges.length, 1, 'Has 1 pending change'); // assert.equal(pendingChanges[0].pageId, 1);
assert.equal(pendingChanges[0].pageId, 7); // assert.equal(pendingChanges[0].sequence, (660 + 770) / 2);
assert.equal(pendingChanges[0].sequence, (110 + 220) / 2); // });
});
test('toc move down top node to bottom', function (assert) { // test('toc top level node skips up some', function (assert) {
let pages = []; // let pages = [];
pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 110 })}); // pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 110 })});
pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 220 })}); // pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 220 })});
pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 330 })}); // pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 330 })});
// pages.pushObject({page: models.PageModel.create({ id: "4", level: 3, sequence: 440 })});
// pages.pushObject({page: models.PageModel.create({ id: "5", level: 3, sequence: 550 })});
// pages.pushObject({page: models.PageModel.create({ id: "6", level: 3, sequence: 660 })});
// pages.pushObject({page: models.PageModel.create({ id: "7", level: 1, sequence: 770 })}); // testing
// pages.pushObject({page: models.PageModel.create({ id: "8", level: 1, sequence: 880 })});
// pages.pushObject({page: models.PageModel.create({ id: "9", level: 1, sequence: 990 })});
let page = pages[0]; // let page = pages[6].page;
let state = toc.getState(pages, page); // let state = toc.getState(pages, page);
assert.equal(state.tocTools.upTarget, '', 'Has no up target'); // assert.equal(state.tocTools.upTarget, '2', 'Has up target');
assert.equal(state.tocTools.downTarget, '2', 'Has down target'); // assert.equal(state.tocTools.downTarget, '8', 'Has down target');
assert.equal(state.tocTools.allowIndent, false, 'Cannot indent'); // assert.equal(state.tocTools.allowIndent, true, 'Can indent');
assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent'); // assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
let pendingChanges = toc.moveDown(state, pages, page); // let pendingChanges = toc.moveUp(state, pages, page);
assert.equal(pendingChanges.length, 1, 'Has 1 pending change'); // assert.equal(pendingChanges.length, 1, 'Has 1 pending change');
assert.equal(pendingChanges[0].pageId, 1); // assert.equal(pendingChanges[0].pageId, 7);
assert.equal(pendingChanges[0].sequence, 330 * 2); // assert.equal(pendingChanges[0].sequence, (110 + 220) / 2);
}); // });
// test('toc move down top node to bottom', function (assert) {
// let pages = [];
// pages.pushObject({page: models.PageModel.create({ id: "1", level: 1, sequence: 110 })});
// pages.pushObject({page: models.PageModel.create({ id: "2", level: 1, sequence: 220 })});
// pages.pushObject({page: models.PageModel.create({ id: "3", level: 2, sequence: 330 })});
// let page = pages[0];
// let state = toc.getState(pages, page);
// assert.equal(state.tocTools.upTarget, '', 'Has no up target');
// assert.equal(state.tocTools.downTarget, '2', 'Has down target');
// assert.equal(state.tocTools.allowIndent, false, 'Cannot indent');
// assert.equal(state.tocTools.allowOutdent, false, 'Cannot outdent');
// let pendingChanges = toc.moveDown(state, pages, page);
// assert.equal(pendingChanges.length, 1, 'Has 1 pending change');
// assert.equal(pendingChanges[0].pageId, 1);
// assert.equal(pendingChanges[0].sequence, 330 * 2);
// });