From b6545a19c352afd6a91a616ff5dc86733f49344d Mon Sep 17 00:00:00 2001 From: Denis Denisov Date: Thu, 6 Oct 2016 16:08:26 +0300 Subject: [PATCH 1/5] #125: removed console, added settings mocks; --- tests/mods/landSpec.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/mods/landSpec.js b/tests/mods/landSpec.js index ef193dd..63d8a68 100644 --- a/tests/mods/landSpec.js +++ b/tests/mods/landSpec.js @@ -63,8 +63,6 @@ describe ( 'Land.js tests', function () { } mock[ 'idrinth-land-gold' ] = { value: '' }; - console.log ( mock ); - spyOn ( document, "getElementById" ).and.callFake ( function ( id ) { if ( mock.hasOwnProperty ( id ) ) { return mock[ id ]; @@ -74,10 +72,14 @@ describe ( 'Land.js tests', function () { } ); spyOn(idrinth.core, 'alert'); + spyOn(idrinth.settings, 'save'); + spyOn(idrinth.settings, 'change'); } ); - it ( "Should properly calculate land values", function () { + it ( "Should properly calculate without errors", function () { + //Prepare values + idrinth.land.calculate (); } ); From ec5e63b380d7bd4a19bb6823129efcf9306975f6 Mon Sep 17 00:00:00 2001 From: Denis Denisov Date: Tue, 11 Oct 2016 12:38:12 +0300 Subject: [PATCH 2/5] #125: changed vars to this; --- src/mods/land.js | 4 ++-- tests/mods/landSpec.js | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/mods/land.js b/src/mods/land.js index b84dcc5..f0a2a82 100644 --- a/src/mods/land.js +++ b/src/mods/land.js @@ -2,10 +2,10 @@ idrinth.land = { calculate: function () { var baseCalculator = function ( checkElementFunc ) { var factor = idrinth.settings.factor ? 10 : 1; + var results = { }; var nextPrice = function ( building ) { return ( 10 + idrinth.settings.land[building] ) * idrinth.land.data[building].base; }; - var results = { }; var applyResult = function ( results, res, factor, nextPrice ) { idrinth.settings.land.gold = idrinth.settings.land.gold - nextPrice ( res.key ) * factor / 10; results[res.key] = ( results[res.key] === undefined ? 0 : results[res.key] ) + factor; @@ -29,7 +29,7 @@ idrinth.land = { min: null }; for (var building in idrinth.land.data) { - if ( building && idrinth.land.data[building] && idrinth.land.data.hasOwnProperty ( building ) ) { + if ( building && idrinth.land.data.hasOwnProperty ( building ) && idrinth.land.data[building] ) { res = check ( checkElementFunc, building, factor, res, nextPrice ); } } diff --git a/tests/mods/landSpec.js b/tests/mods/landSpec.js index 63d8a68..ee6a58c 100644 --- a/tests/mods/landSpec.js +++ b/tests/mods/landSpec.js @@ -51,24 +51,23 @@ describe ( 'Land.js tests', function () { describe ( "Land calculate method", function () { beforeEach ( function () { - var mock = {}, - defaultStructure = '{ "value": "", "parentNode": { "nextSibling": { "innerHTML": "" } } }', - document_getElementById; - document_getElementById = jasmine.createSpyObj ( "input", [ 'value', 'parentNode', 'nextSibling', 'innerHTML' ] ); + this.mock = {}; + this.defaultStructure = '{ "value": "", "parentNode": { "nextSibling": { "innerHTML": "" } } }'; + this.document_getElementById = jasmine.createSpyObj ( "input", [ 'value', 'parentNode', 'nextSibling', 'innerHTML' ] ); for ( var i in idrinth.land.data ) { if ( idrinth.land.data.hasOwnProperty ( i ) ) { - mock[ 'idrinth-land-' + i ] = JSON.parse ( defaultStructure ); + this.mock[ 'idrinth-land-' + i ] = JSON.parse ( defaultStructure ); } } - mock[ 'idrinth-land-gold' ] = { value: '' }; + this.mock[ 'idrinth-land-gold' ] = { value: '' }; spyOn ( document, "getElementById" ).and.callFake ( function ( id ) { - if ( mock.hasOwnProperty ( id ) ) { - return mock[ id ]; + if ( this.mock.hasOwnProperty ( id ) ) { + return this.mock[ id ]; } - return document_getElementById ( id ); + return this.document_getElementById ( id ); } ); spyOn(idrinth.core, 'alert'); @@ -79,8 +78,11 @@ describe ( 'Land.js tests', function () { it ( "Should properly calculate without errors", function () { //Prepare values + idrinth.settings.land.gold = 8000000000; idrinth.land.calculate (); + + } ); } ); From c0ec2314e86c4268cc75cd70c269f6315c9e74d1 Mon Sep 17 00:00:00 2001 From: Denis Denisov Date: Wed, 12 Oct 2016 15:41:22 +0300 Subject: [PATCH 3/5] #125: first test for Land, need to add method verifications; --- src/mods/land.js | 2 +- src/mods/text.js | 5 +++-- tests/mods/landSpec.js | 38 ++++++++++++++++++++++++++++++-------- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/mods/land.js b/src/mods/land.js index f0a2a82..c6611a4 100644 --- a/src/mods/land.js +++ b/src/mods/land.js @@ -61,7 +61,7 @@ idrinth.land = { var putResults = function ( results ) { for (var key in results) { if ( results.hasOwnProperty ( key ) ) { - document.getElementById ( 'idrinth-land-' + key ).value = idrinth.settings.land[key]; + document.getElementById ( 'idrinth-land-' + key ).value = results[key]; document.getElementById ( 'idrinth-land-' + key ).parentNode.nextSibling.innerHTML = '+' + results[key]; } } diff --git a/src/mods/text.js b/src/mods/text.js index ab20894..8df7cbc 100644 --- a/src/mods/text.js +++ b/src/mods/text.js @@ -13,6 +13,7 @@ idrinth.text = { var language = idrinth.settings.get ( "language" ) || window.navigator.userLanguage || window.navigator.language; if ( language === 'en' ) { idrinth.text.initialized = true; + idrinth.text.data = JSON.parse ( '###LANG###' ); return; } idrinth.core.ajax.runHome ( 'lang-service/###RELOAD-VERSION###/', function ( file ) { @@ -41,11 +42,11 @@ idrinth.text = { * See languages/en.json for an example * @type {object} */ - data: JSON.parse ( '###LANG###' ), + data: {}, /** * returns the translation of a provided key or an error-message if no * matching translation is found - * @param string key + * @param {string} key * @returns {string} */ get: function ( key ) { diff --git a/tests/mods/landSpec.js b/tests/mods/landSpec.js index ee6a58c..1ea119e 100644 --- a/tests/mods/landSpec.js +++ b/tests/mods/landSpec.js @@ -49,30 +49,32 @@ describe ( 'Land.js tests', function () { } ); describe ( "Land calculate method", function () { + var mockDOM = {}, defaultStructure, document_getElementById; beforeEach ( function () { - this.mock = {}; - this.defaultStructure = '{ "value": "", "parentNode": { "nextSibling": { "innerHTML": "" } } }'; - this.document_getElementById = jasmine.createSpyObj ( "input", [ 'value', 'parentNode', 'nextSibling', 'innerHTML' ] ); + defaultStructure = '{ "parentNode.nextSibling.innerHTML": "", "parentNode": { "nextSibling": { "innerHTML": "" } } }'; + document_getElementById = jasmine.createSpyObj ( "input", [ 'value', 'parentNode', 'nextSibling', 'innerHTML' ] ); for ( var i in idrinth.land.data ) { if ( idrinth.land.data.hasOwnProperty ( i ) ) { - this.mock[ 'idrinth-land-' + i ] = JSON.parse ( defaultStructure ); + mockDOM[ 'idrinth-land-' + i ] = JSON.parse ( defaultStructure ); } } - this.mock[ 'idrinth-land-gold' ] = { value: '' }; + mockDOM[ 'idrinth-land-gold' ] = { value: '' }; spyOn ( document, "getElementById" ).and.callFake ( function ( id ) { - if ( this.mock.hasOwnProperty ( id ) ) { - return this.mock[ id ]; + if ( mockDOM.hasOwnProperty ( id ) ) { + return mockDOM[ id ]; } - return this.document_getElementById ( id ); + return document_getElementById ( id ); } ); spyOn(idrinth.core, 'alert'); spyOn(idrinth.settings, 'save'); spyOn(idrinth.settings, 'change'); + spyOn(idrinth.text, 'get'); + spyOn(idrinth.text, 'start'); } ); @@ -82,6 +84,26 @@ describe ( 'Land.js tests', function () { idrinth.land.calculate (); + expect(mockDOM['idrinth-land-cornfield'].value).toEqual(840); + expect(mockDOM['idrinth-land-stable'].value).toEqual(650); + expect(mockDOM['idrinth-land-barn'].value).toEqual(520); + expect(mockDOM['idrinth-land-store'].value).toEqual(450); + expect(mockDOM['idrinth-land-pub'].value).toEqual(390); + expect(mockDOM['idrinth-land-inn'].value).toEqual(350); + expect(mockDOM['idrinth-land-tower'].value).toEqual(280); + expect(mockDOM['idrinth-land-fort'].value).toEqual(230); + expect(mockDOM['idrinth-land-castle'].value).toEqual(200); + expect(mockDOM['idrinth-land-gold'].value).toEqual(1450000); + + expect(mockDOM['idrinth-land-cornfield'].parentNode.nextSibling.innerHTML).toEqual("+840"); + expect(mockDOM['idrinth-land-stable'].parentNode.nextSibling.innerHTML).toEqual("+650"); + expect(mockDOM['idrinth-land-barn'].parentNode.nextSibling.innerHTML).toEqual("+520"); + expect(mockDOM['idrinth-land-store'].parentNode.nextSibling.innerHTML).toEqual("+450"); + expect(mockDOM['idrinth-land-pub'].parentNode.nextSibling.innerHTML).toEqual("+390"); + expect(mockDOM['idrinth-land-inn'].parentNode.nextSibling.innerHTML).toEqual("+350"); + expect(mockDOM['idrinth-land-tower'].parentNode.nextSibling.innerHTML).toEqual("+280"); + expect(mockDOM['idrinth-land-fort'].parentNode.nextSibling.innerHTML).toEqual("+230"); + expect(mockDOM['idrinth-land-castle'].parentNode.nextSibling.innerHTML).toEqual("+200"); } ); From a32961d8fbf73df15653d43ca174cc889d42aaad Mon Sep 17 00:00:00 2001 From: Denis Denisov Date: Thu, 13 Oct 2016 16:47:58 +0300 Subject: [PATCH 4/5] #125: added two additional tests with verification and number of calls; --- tests/mods/landSpec.js | 65 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/tests/mods/landSpec.js b/tests/mods/landSpec.js index 1ea119e..15906b6 100644 --- a/tests/mods/landSpec.js +++ b/tests/mods/landSpec.js @@ -74,14 +74,11 @@ describe ( 'Land.js tests', function () { spyOn(idrinth.settings, 'save'); spyOn(idrinth.settings, 'change'); spyOn(idrinth.text, 'get'); - spyOn(idrinth.text, 'start'); } ); - it ( "Should properly calculate without errors", function () { - //Prepare values + it ( "Should properly calculate when gold is 8000000000", function () { idrinth.settings.land.gold = 8000000000; - idrinth.land.calculate (); expect(mockDOM['idrinth-land-cornfield'].value).toEqual(840); @@ -105,8 +102,68 @@ describe ( 'Land.js tests', function () { expect(mockDOM['idrinth-land-fort'].parentNode.nextSibling.innerHTML).toEqual("+230"); expect(mockDOM['idrinth-land-castle'].parentNode.nextSibling.innerHTML).toEqual("+200"); + expect(idrinth.settings.change.calls.count()).toEqual(10); + expect(idrinth.settings.save.calls.count()).toEqual(1); + + expect(idrinth.core.alert.calls.count()).toEqual(0); + expect(idrinth.text.get.calls.count()).toEqual(0); + } ); + + + it ( "Should show alert when gold is 0", function () { + idrinth.settings.land.gold = 0; + idrinth.land.calculate (); + + expect(idrinth.settings.save.calls.count()).toEqual(1); + + expect(idrinth.core.alert.calls.count()).toEqual(1); + expect(idrinth.text.get.calls.count()).toEqual(1); } ); + it ( "Should properly calculate when gold is 8000000000 and 10 for each land type", function () { + idrinth.settings.land.gold = 8000000000; + + idrinth.settings.land.cornfield = 100; + idrinth.settings.land.stable = 100; + idrinth.settings.land.barn = 100; + idrinth.settings.land.store = 100; + idrinth.settings.land.pub = 100; + idrinth.settings.land.inn = 100; + idrinth.settings.land.tower = 100; + idrinth.settings.land.fort = 100; + idrinth.settings.land.castle = 100; + + idrinth.land.calculate (); + + expect(mockDOM['idrinth-land-cornfield'].value).toEqual(790); + expect(mockDOM['idrinth-land-stable'].value).toEqual(600); + expect(mockDOM['idrinth-land-barn'].value).toEqual(450); + expect(mockDOM['idrinth-land-store'].value).toEqual(380); + expect(mockDOM['idrinth-land-pub'].value).toEqual(310); + expect(mockDOM['idrinth-land-inn'].value).toEqual(270); + expect(mockDOM['idrinth-land-tower'].value).toEqual(200); + expect(mockDOM['idrinth-land-fort'].value).toEqual(150); + expect(mockDOM['idrinth-land-castle'].value).toEqual(120); + expect(mockDOM['idrinth-land-gold'].value).toEqual(2450000); + + expect(mockDOM['idrinth-land-cornfield'].parentNode.nextSibling.innerHTML).toEqual("+790"); + expect(mockDOM['idrinth-land-stable'].parentNode.nextSibling.innerHTML).toEqual("+600"); + expect(mockDOM['idrinth-land-barn'].parentNode.nextSibling.innerHTML).toEqual("+450"); + expect(mockDOM['idrinth-land-store'].parentNode.nextSibling.innerHTML).toEqual("+380"); + expect(mockDOM['idrinth-land-pub'].parentNode.nextSibling.innerHTML).toEqual("+310"); + expect(mockDOM['idrinth-land-inn'].parentNode.nextSibling.innerHTML).toEqual("+270"); + expect(mockDOM['idrinth-land-tower'].parentNode.nextSibling.innerHTML).toEqual("+200"); + expect(mockDOM['idrinth-land-fort'].parentNode.nextSibling.innerHTML).toEqual("+150"); + expect(mockDOM['idrinth-land-castle'].parentNode.nextSibling.innerHTML).toEqual("+120"); + + expect(idrinth.settings.change.calls.count()).toEqual(10); + expect(idrinth.settings.save.calls.count()).toEqual(1); + + expect(idrinth.core.alert.calls.count()).toEqual(0); + expect(idrinth.text.get.calls.count()).toEqual(0); + } ); + + } ); } ); \ No newline at end of file From 6953752f524d1c46b6eba18e34563be1a7f3d7b5 Mon Sep 17 00:00:00 2001 From: Denis Denisov Date: Tue, 18 Oct 2016 15:47:03 +0300 Subject: [PATCH 5/5] #125: added two minor changes to tests, added Settings core tests; --- tests/mods/landSpec.js | 129 ++++++++++++++++++++----------------- tests/mods/settingsSpec.js | 61 ++++++++++++++++++ 2 files changed, 131 insertions(+), 59 deletions(-) create mode 100644 tests/mods/settingsSpec.js diff --git a/tests/mods/landSpec.js b/tests/mods/landSpec.js index 15906b6..8883d9a 100644 --- a/tests/mods/landSpec.js +++ b/tests/mods/landSpec.js @@ -70,10 +70,21 @@ describe ( 'Land.js tests', function () { return document_getElementById ( id ); } ); - spyOn(idrinth.core, 'alert'); - spyOn(idrinth.settings, 'save'); - spyOn(idrinth.settings, 'change'); - spyOn(idrinth.text, 'get'); + spyOn ( idrinth.core, 'alert' ); + spyOn ( idrinth.settings, 'save' ); + spyOn ( idrinth.settings, 'change' ); + spyOn ( idrinth.text, 'get' ); + } ); + + afterEach ( function () { + //cleanup all defined values settings + if ( idrinth && idrinth.settings ) { + for ( var i in idrinth.settings.land ) { + if ( idrinth.settings.land.hasOwnProperty ( i ) ) { + idrinth.settings.land[ i ] = 0; + } + } + } } ); @@ -81,32 +92,32 @@ describe ( 'Land.js tests', function () { idrinth.settings.land.gold = 8000000000; idrinth.land.calculate (); - expect(mockDOM['idrinth-land-cornfield'].value).toEqual(840); - expect(mockDOM['idrinth-land-stable'].value).toEqual(650); - expect(mockDOM['idrinth-land-barn'].value).toEqual(520); - expect(mockDOM['idrinth-land-store'].value).toEqual(450); - expect(mockDOM['idrinth-land-pub'].value).toEqual(390); - expect(mockDOM['idrinth-land-inn'].value).toEqual(350); - expect(mockDOM['idrinth-land-tower'].value).toEqual(280); - expect(mockDOM['idrinth-land-fort'].value).toEqual(230); - expect(mockDOM['idrinth-land-castle'].value).toEqual(200); - expect(mockDOM['idrinth-land-gold'].value).toEqual(1450000); - - expect(mockDOM['idrinth-land-cornfield'].parentNode.nextSibling.innerHTML).toEqual("+840"); - expect(mockDOM['idrinth-land-stable'].parentNode.nextSibling.innerHTML).toEqual("+650"); - expect(mockDOM['idrinth-land-barn'].parentNode.nextSibling.innerHTML).toEqual("+520"); - expect(mockDOM['idrinth-land-store'].parentNode.nextSibling.innerHTML).toEqual("+450"); - expect(mockDOM['idrinth-land-pub'].parentNode.nextSibling.innerHTML).toEqual("+390"); - expect(mockDOM['idrinth-land-inn'].parentNode.nextSibling.innerHTML).toEqual("+350"); - expect(mockDOM['idrinth-land-tower'].parentNode.nextSibling.innerHTML).toEqual("+280"); - expect(mockDOM['idrinth-land-fort'].parentNode.nextSibling.innerHTML).toEqual("+230"); - expect(mockDOM['idrinth-land-castle'].parentNode.nextSibling.innerHTML).toEqual("+200"); - - expect(idrinth.settings.change.calls.count()).toEqual(10); - expect(idrinth.settings.save.calls.count()).toEqual(1); - - expect(idrinth.core.alert.calls.count()).toEqual(0); - expect(idrinth.text.get.calls.count()).toEqual(0); + expect ( mockDOM[ 'idrinth-land-cornfield' ].value ).toEqual ( 840 ); + expect ( mockDOM[ 'idrinth-land-stable' ].value ).toEqual ( 650 ); + expect ( mockDOM[ 'idrinth-land-barn' ].value ).toEqual ( 520 ); + expect ( mockDOM[ 'idrinth-land-store' ].value ).toEqual ( 450 ); + expect ( mockDOM[ 'idrinth-land-pub' ].value ).toEqual ( 390 ); + expect ( mockDOM[ 'idrinth-land-inn' ].value ).toEqual ( 350 ); + expect ( mockDOM[ 'idrinth-land-tower' ].value ).toEqual ( 280 ); + expect ( mockDOM[ 'idrinth-land-fort' ].value ).toEqual ( 230 ); + expect ( mockDOM[ 'idrinth-land-castle' ].value ).toEqual ( 200 ); + expect ( mockDOM[ 'idrinth-land-gold' ].value ).toEqual ( 1450000 ); + + expect ( mockDOM[ 'idrinth-land-cornfield' ].parentNode.nextSibling.innerHTML ).toEqual ( "+840" ); + expect ( mockDOM[ 'idrinth-land-stable' ].parentNode.nextSibling.innerHTML ).toEqual ( "+650" ); + expect ( mockDOM[ 'idrinth-land-barn' ].parentNode.nextSibling.innerHTML ).toEqual ( "+520" ); + expect ( mockDOM[ 'idrinth-land-store' ].parentNode.nextSibling.innerHTML ).toEqual ( "+450" ); + expect ( mockDOM[ 'idrinth-land-pub' ].parentNode.nextSibling.innerHTML ).toEqual ( "+390" ); + expect ( mockDOM[ 'idrinth-land-inn' ].parentNode.nextSibling.innerHTML ).toEqual ( "+350" ); + expect ( mockDOM[ 'idrinth-land-tower' ].parentNode.nextSibling.innerHTML ).toEqual ( "+280" ); + expect ( mockDOM[ 'idrinth-land-fort' ].parentNode.nextSibling.innerHTML ).toEqual ( "+230" ); + expect ( mockDOM[ 'idrinth-land-castle' ].parentNode.nextSibling.innerHTML ).toEqual ( "+200" ); + + expect ( idrinth.settings.change.calls.count () ).toEqual ( 10 ); + expect ( idrinth.settings.save.calls.count () ).toEqual ( 1 ); + + expect ( idrinth.core.alert.calls.count () ).toEqual ( 0 ); + expect ( idrinth.text.get.calls.count () ).toEqual ( 0 ); } ); @@ -114,10 +125,10 @@ describe ( 'Land.js tests', function () { idrinth.settings.land.gold = 0; idrinth.land.calculate (); - expect(idrinth.settings.save.calls.count()).toEqual(1); + expect ( idrinth.settings.save.calls.count () ).toEqual ( 1 ); - expect(idrinth.core.alert.calls.count()).toEqual(1); - expect(idrinth.text.get.calls.count()).toEqual(1); + expect ( idrinth.core.alert.calls.count () ).toEqual ( 1 ); + expect ( idrinth.text.get.calls.count () ).toEqual ( 1 ); } ); it ( "Should properly calculate when gold is 8000000000 and 10 for each land type", function () { @@ -135,32 +146,32 @@ describe ( 'Land.js tests', function () { idrinth.land.calculate (); - expect(mockDOM['idrinth-land-cornfield'].value).toEqual(790); - expect(mockDOM['idrinth-land-stable'].value).toEqual(600); - expect(mockDOM['idrinth-land-barn'].value).toEqual(450); - expect(mockDOM['idrinth-land-store'].value).toEqual(380); - expect(mockDOM['idrinth-land-pub'].value).toEqual(310); - expect(mockDOM['idrinth-land-inn'].value).toEqual(270); - expect(mockDOM['idrinth-land-tower'].value).toEqual(200); - expect(mockDOM['idrinth-land-fort'].value).toEqual(150); - expect(mockDOM['idrinth-land-castle'].value).toEqual(120); - expect(mockDOM['idrinth-land-gold'].value).toEqual(2450000); - - expect(mockDOM['idrinth-land-cornfield'].parentNode.nextSibling.innerHTML).toEqual("+790"); - expect(mockDOM['idrinth-land-stable'].parentNode.nextSibling.innerHTML).toEqual("+600"); - expect(mockDOM['idrinth-land-barn'].parentNode.nextSibling.innerHTML).toEqual("+450"); - expect(mockDOM['idrinth-land-store'].parentNode.nextSibling.innerHTML).toEqual("+380"); - expect(mockDOM['idrinth-land-pub'].parentNode.nextSibling.innerHTML).toEqual("+310"); - expect(mockDOM['idrinth-land-inn'].parentNode.nextSibling.innerHTML).toEqual("+270"); - expect(mockDOM['idrinth-land-tower'].parentNode.nextSibling.innerHTML).toEqual("+200"); - expect(mockDOM['idrinth-land-fort'].parentNode.nextSibling.innerHTML).toEqual("+150"); - expect(mockDOM['idrinth-land-castle'].parentNode.nextSibling.innerHTML).toEqual("+120"); - - expect(idrinth.settings.change.calls.count()).toEqual(10); - expect(idrinth.settings.save.calls.count()).toEqual(1); - - expect(idrinth.core.alert.calls.count()).toEqual(0); - expect(idrinth.text.get.calls.count()).toEqual(0); + expect ( mockDOM[ 'idrinth-land-cornfield' ].value ).toEqual ( 790 ); + expect ( mockDOM[ 'idrinth-land-stable' ].value ).toEqual ( 600 ); + expect ( mockDOM[ 'idrinth-land-barn' ].value ).toEqual ( 450 ); + expect ( mockDOM[ 'idrinth-land-store' ].value ).toEqual ( 380 ); + expect ( mockDOM[ 'idrinth-land-pub' ].value ).toEqual ( 310 ); + expect ( mockDOM[ 'idrinth-land-inn' ].value ).toEqual ( 270 ); + expect ( mockDOM[ 'idrinth-land-tower' ].value ).toEqual ( 200 ); + expect ( mockDOM[ 'idrinth-land-fort' ].value ).toEqual ( 150 ); + expect ( mockDOM[ 'idrinth-land-castle' ].value ).toEqual ( 120 ); + expect ( mockDOM[ 'idrinth-land-gold' ].value ).toEqual ( 2450000 ); + + expect ( mockDOM[ 'idrinth-land-cornfield' ].parentNode.nextSibling.innerHTML ).toEqual ( "+790" ); + expect ( mockDOM[ 'idrinth-land-stable' ].parentNode.nextSibling.innerHTML ).toEqual ( "+600" ); + expect ( mockDOM[ 'idrinth-land-barn' ].parentNode.nextSibling.innerHTML ).toEqual ( "+450" ); + expect ( mockDOM[ 'idrinth-land-store' ].parentNode.nextSibling.innerHTML ).toEqual ( "+380" ); + expect ( mockDOM[ 'idrinth-land-pub' ].parentNode.nextSibling.innerHTML ).toEqual ( "+310" ); + expect ( mockDOM[ 'idrinth-land-inn' ].parentNode.nextSibling.innerHTML ).toEqual ( "+270" ); + expect ( mockDOM[ 'idrinth-land-tower' ].parentNode.nextSibling.innerHTML ).toEqual ( "+200" ); + expect ( mockDOM[ 'idrinth-land-fort' ].parentNode.nextSibling.innerHTML ).toEqual ( "+150" ); + expect ( mockDOM[ 'idrinth-land-castle' ].parentNode.nextSibling.innerHTML ).toEqual ( "+120" ); + + expect ( idrinth.settings.change.calls.count () ).toEqual ( 10 ); + expect ( idrinth.settings.save.calls.count () ).toEqual ( 1 ); + + expect ( idrinth.core.alert.calls.count () ).toEqual ( 0 ); + expect ( idrinth.text.get.calls.count () ).toEqual ( 0 ); } ); diff --git a/tests/mods/settingsSpec.js b/tests/mods/settingsSpec.js new file mode 100644 index 0000000..7f1e11c --- /dev/null +++ b/tests/mods/settingsSpec.js @@ -0,0 +1,61 @@ +describe ( 'Settings.js tests', function () { + + it ( 'should have a idrinth variable in scope', function () { + expect ( idrinth ).toBeDefined (); + } ); + + it ( 'should have default values defined', function () { + var defaults = { + raids: false, + favs: '', + factor: true, + moveLeft: false, + minimalist: false, + chatHiddenOnStart: true, + names: true, + timeout: 5000, + loadtime: 5000, + windows: 3, + warBottom: false, + landMax: true, + chatting: true, + chatuser: '', + newgroundLoad: 30, + chatpass: '', + isWorldServer: false, + alarmTime: '8:0', + alarmActive: false, + bannedRaids: {}, + language: 'en', + notification: { + mention: true, + message: true, + raid: true + }, + land: { + cornfield: 0, + stable: 0, + barn: 0, + store: 0, + pub: 0, + inn: 0, + tower: 0, + fort: 0, + castle: 0, + gold: 0 + } + }; + + var copySettings = JSON.parse ( JSON.stringify ( idrinth.settings ) ); + + //CleanUP functions -> not part of the test + for ( var i in copySettings ) { + if ( copySettings.hasOwnProperty ( i ) && typeof copySettings[ i ] === 'function' ) { + delete copySettings[ i ]; + } + } + + expect ( copySettings ).toEqual ( defaults ); + } ); + +} ); \ No newline at end of file