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 @@
+
+
+
+