diff --git a/DataStorage/LocalStorage.js b/DataStorage/LocalStorage.js index 9e790cb..e9d6137 100644 --- a/DataStorage/LocalStorage.js +++ b/DataStorage/LocalStorage.js @@ -31,13 +31,15 @@ * * @since 1.0.0 */ - available () - { - try { - return 'localStorage' in window && window.localStorage !== null; - } catch (e) { - return false; - } - }; + } + + jsOMS.DataStorage.LocalStorage.available = function () + { + try { + return 'localStorage' in window && window.localStorage !== null; + } catch (e) { + return false; + } + }; }(window.jsOMS = window.jsOMS || {})); diff --git a/Event/EventManager.js b/Event/EventManager.js index 5698eb9..9ec0c16 100644 --- a/Event/EventManager.js +++ b/Event/EventManager.js @@ -85,7 +85,7 @@ return false; } - for (let id in this.groups[group]) { + for (let id in this.groups[group]) { if (!this.groups[group].hasOwnProperty(id) || !this.groups[group][id]) { return true; } @@ -109,10 +109,8 @@ * * @since 1.0.0 */ - trigger (group, id, data) + trigger (group, id = '', data = null) { - id = typeof id !== 'undefined' ? id : 0; - if (!this.callbacks.hasOwnProperty(group)) { return false; } @@ -130,9 +128,11 @@ } else if (this.callbacks[group].reset) { this.reset(group); } + + return true; } - return true; + return false; }; /** @@ -148,8 +148,51 @@ */ detach (group) { - delete this.callbacks[group]; - delete this.groups[group]; + return this.detachCallback(group) | this.detachGroup(group); + }; + + /** + * Detach callback + * + * @param {string|int} group Group id + * + * @return {void} + * + * @method + * + * @since 1.0.0 + */ + detachCallback(group) + { + if (this.callbacks.hasOwnProperty(group)) { + delete this.callbacks[group]; + + return true; + } + + return false; + }; + + /** + * Detach group + * + * @param {string|int} group Group id + * + * @return {void} + * + * @method + * + * @since 1.0.0 + */ + detachGroup(group) + { + if (this.groups.hasOwnProperty(group)) { + delete this.groups[group]; + + return true; + } + + return false; }; /** @@ -188,7 +231,7 @@ */ count () { - return this.callbacks.length; + return Object.keys(this.callbacks).length; }; } }(window.jsOMS = window.jsOMS || {})); diff --git a/tests/Account/AccountTypeTest.js b/tests/Account/AccountTypeTest.js index 3694a64..b06288e 100644 --- a/tests/Account/AccountTypeTest.js +++ b/tests/Account/AccountTypeTest.js @@ -9,7 +9,7 @@ describe('AccountTypeTest', function () expect(Object.keys(jsOMS.Account.AccountType).length).toBe(2); }); - it('Testing amount of enums', function () + it('Testing values of enums', function () { expect(jsOMS.Account.AccountType.USER).toBe(0); expect(jsOMS.Account.AccountType.GROUP).toBe(1); diff --git a/tests/Config/OptionsTest.js b/tests/Config/OptionsTest.js index 2fb6a3f..13ad0ca 100644 --- a/tests/Config/OptionsTest.js +++ b/tests/Config/OptionsTest.js @@ -2,14 +2,6 @@ describe('OptionsTest', function () { "use strict"; - beforeEach(function () - { - }); - - afterEach(function () - { - }); - describe('testDefault', function () { it('Testing default functionality', function () diff --git a/tests/DataStorage/LocalStorageTest.js b/tests/DataStorage/LocalStorageTest.js index 2347d74..185110d 100644 --- a/tests/DataStorage/LocalStorageTest.js +++ b/tests/DataStorage/LocalStorageTest.js @@ -2,11 +2,11 @@ describe('LocalStorageTest', function () { "use strict"; - beforeEach(function () - { - }); - - afterEach(function () + describe('testDefault', function () { + it('Testing default functionality', function () + { + expect(jsOMS.DataStorage.LocalStorage.available()).toBeTruthy(); + }); }); }); diff --git a/tests/Event/EventManagerTest.js b/tests/Event/EventManagerTest.js index 098cab4..c9edaa5 100644 --- a/tests/Event/EventManagerTest.js +++ b/tests/Event/EventManagerTest.js @@ -2,11 +2,76 @@ describe('EventManagerTest', function () { "use strict"; - beforeEach(function () + describe('testDefault', function () { + it('Testing default functionality', function () + { + let manager = new jsOMS.Event.EventManager(); + + expect(manager.hasOutstanding('invalid')).toBeFalsy(null); + expect(manager.trigger('invalid')).toBeFalsy(null); + expect(manager.count()).toBe(0); + }); }); - afterEach(function () + describe('testBase', function () { + it('Testing base functionality', function () + { + let manager = new jsOMS.Event.EventManager(); + + expect(manager.attach('group', function() { return true; }, false, false)).toBeTruthy(); + expect(manager.attach('group', function() { return true; }, false, false)).toBeFalsy(); + expect(manager.count()).toBe(1); + }); + }); + + describe('testReset', function () + { + it('Testing reset functionality', function () + { + let manager = new jsOMS.Event.EventManager(); + + expect(manager.attach('group', function() { return true; }, false, true)).toBeTruthy(); + manager.addGroup('group', 'id1'); + manager.addGroup('group', 'id2'); + + expect(manager.trigger('group', 'id1')).toBeFalsy(); + expect(manager.trigger('group', 'id2')).toBeTruthy(); + expect(manager.trigger('group', 'id2')).toBeFalsy(); + expect(manager.count()).toBe(1); + }); + }); + + describe('testDetach', function () + { + it('Testing detach functionality', function () + { + let manager = new jsOMS.Event.EventManager(); + + expect(manager.attach('group', function() { return true; }, false, true)).toBeTruthy(); + manager.addGroup('group', 'id1'); + manager.addGroup('group', 'id2'); + + expect(manager.count()).toBe(1); + expect(manager.detach('group')).toBeTruthy(); + expect(manager.count()).toBe(0); + expect(manager.detach('group')).toBeFalsy(); + }); + }); + + describe('testRemove', function () + { + it('Testing remove functionality', function () + { + let manager = new jsOMS.Event.EventManager(); + + expect(manager.attach('group1', function() { return true; }, true, false)).toBeTruthy(); + expect(manager.attach('group2', function() { return true; }, true, false)).toBeTruthy(); + expect(manager.count()).toBe(2); + + manager.trigger('group1'); + expect(manager.count()).toBe(1); + }); }); }); diff --git a/tests/SpecRunner.html b/tests/SpecRunner.html index 2356603..6d91f81 100644 --- a/tests/SpecRunner.html +++ b/tests/SpecRunner.html @@ -18,6 +18,7 @@ + @@ -25,6 +26,10 @@ + + + + @@ -37,6 +42,10 @@ + + + +