diff --git a/test/scripts.js b/test/scripts.js index 55739ef1..5fb586f9 100644 --- a/test/scripts.js +++ b/test/scripts.js @@ -24,8 +24,7 @@ $(function () { describe('integration tests', function () { - // @include "tests/integration/first.js" - + // @include "tests/integration/*.js" // @include "tests/integration/*/*.js" }); }); diff --git a/test/tests/integration/first.js b/test/tests/integration/first.js deleted file mode 100644 index d3ef4d63..00000000 --- a/test/tests/integration/first.js +++ /dev/null @@ -1,12 +0,0 @@ -(function () { -'use strict'; - -describe('first', function () { - - it('nothing here', function () { - - assert.isTrue(true); - }); -}); - -}()); diff --git a/test/tests/integration/view.js b/test/tests/integration/view.js new file mode 100644 index 00000000..ab3e80c2 --- /dev/null +++ b/test/tests/integration/view.js @@ -0,0 +1,135 @@ +(function () { +'use strict'; + +describe('view', function () { + + before(function () { + + this.configBackup = modulejs._private.definitions.config; + this.storeKey = '_h5ai'; + this.xConfig = { + setup: { + API: true, + APP_HREF: util.uniqPath('/APP/'), + ROOT_HREF: util.uniqPath('/ROOT/'), + CURRENT_HREF: util.uniqPath('/CURRENT/') + } + }; + }); + + after(function () { + + modulejs._private.definitions.config = this.configBackup; + util.clearModulejs(); + util.restoreHtml(); + window.localStorage.removeItem(this.storeKey); + $('body').removeAttr('id'); + }); + + beforeEach(function () { + + delete modulejs._private.definitions.config; + modulejs.define('config', this.xConfig); + util.clearModulejs(); + util.restoreHtml(); + window.localStorage.removeItem(this.storeKey); + $('body').removeAttr('id'); + $('
').appendTo('body'); + $('
').appendTo('body'); + }); + + describe('requiring view/viewmode', function () { + + it('requires without errors', function () { + + modulejs.require('view/viewmode'); + }); + + it('adds id root to body', function () { + + modulejs.require('view/viewmode'); + assert.strictEqual($('body').attr('id'), 'root'); + }); + + it('removes HTML #fallback', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#fallback'), 0); + }); + + it('removes HTML #fallback-hints', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#fallback-hints'), 0); + }); + + it('adds HTML #main-row to #root', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#root > #main-row'), 1); + }); + + it('adds HTML #content to #main-row', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#main-row > #content'), 1); + }); + + it('adds HTML #view to #content', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#content > #view'), 1); + }); + + it('adds HTML #items to #view', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#view > #items'), 1); + }); + + it('adds HTML #topbar to #root', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#root > #topbar'), 1); + }); + + it('adds HTML #toolbar to #topbar', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#topbar > #toolbar'), 1); + }); + + it('adds HTML #flowbar to #topbar', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#topbar > #flowbar'), 1); + }); + + it('adds HTML #backlink to #topbar', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#topbar > #backlink'), 1); + }); + + it('adds HTML #sidebar-toggle to #toolbar', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#toolbar > #sidebar-toggle'), 1); + }); + + it('adds HTML .block viewmode to #sidebar', function () { + + modulejs.require('view/viewmode'); + assert.lengthOf($('#sidebar > .block > .l10n-view'), 1); + }); + + it('adds style to head', function () { + + var styleTagCount = $('head > style').length; + modulejs.require('view/viewmode'); + assert.lengthOf($('head > style'), styleTagCount + 1); + }); + }); +}); + +}()); diff --git a/test/tests/unit/core/store.js b/test/tests/unit/core/store.js index f6d27685..ab63f7cc 100644 --- a/test/tests/unit/core/store.js +++ b/test/tests/unit/core/store.js @@ -11,7 +11,6 @@ describe('module \'' + ID + '\'', function () { this.definition = modulejs._private.definitions[ID]; this.storeKey = '_h5ai'; - this.storeBackup = window.localStorage.getItem(this.storeKey); this.xModernizr = {localstorage: true}; this.applyFn = function () { @@ -21,11 +20,12 @@ describe('module \'' + ID + '\'', function () { after(function () { - if (this.storeBackup) { - window.localStorage.setItem(this.storeKey, this.storeBackup); - } else { - window.localStorage.removeItem(this.storeKey); - } + util.restoreHtml(); + }); + + beforeEach(function () { + + util.restoreHtml(); }); describe('definition', function () { diff --git a/test/util/pin.js b/test/util/pin.js index 16f3e238..51d18811 100644 --- a/test/util/pin.js +++ b/test/util/pin.js @@ -2,21 +2,33 @@ 'use strict'; var title; +var htmlId; var htmlClasses; +var bodyId; +var bodyClasses; var $pinnedElements; function pinHtml() { title = document.title; + htmlId = $('html').attr('id'); htmlClasses = $('html').attr('class'); + bodyId = $('body').attr('id'); + bodyClasses = $('body').attr('class'); $pinnedElements = $('head,body').children(); } function restoreHtml() { document.title = title; + $('html').attr('id', htmlId); $('html').attr('class', htmlClasses); + $('body').attr('id', bodyId); + $('body').attr('class', bodyClasses); $('head,body').children().not($pinnedElements).remove(); + if (window.localStorage && window.localStorage.clear) { + window.localStorage.clear(); + } } window.util = window.util || {};