GUI -- augmented Key Service unit tests to include masked key test, and gesture notes test.
Change-Id: I4797cbb5baec6f05835b3fbc77952e47c059c5d1
diff --git a/web/gui/src/main/webapp/app/fw/lib/keys.js b/web/gui/src/main/webapp/app/fw/lib/keys.js
index f4318df..87dc21d 100644
--- a/web/gui/src/main/webapp/app/fw/lib/keys.js
+++ b/web/gui/src/main/webapp/app/fw/lib/keys.js
@@ -23,7 +23,7 @@
'use strict';
// references to injected services
- var f;
+ var $log, f;
// internal state
var keyHandler = {
@@ -156,13 +156,12 @@
viewKeys = d3.map(keyArg).keys();
viewKeys.forEach(function (key) {
if (keyHandler.maskedKeys[key]) {
- masked.push(' Key "' + key + '" is reserved');
+ masked.push('setKeyBindings(): Key "' + key + '" is reserved');
}
});
if (masked.length) {
- // TODO: use alert service
- window.alert('WARNING...\n\nsetKeys():\n' + masked.join('\n'));
+ $log.warn(masked.join('\n'));
}
keyHandler.viewKeys = keyArg;
}
@@ -182,8 +181,8 @@
};
}
- // TODO: inject alert service
- onos.factory('KeyService', ['FnService', function (fs) {
+ onos.factory('KeyService', ['$log', 'FnService', function ($l, fs) {
+ $log = $l;
f = fs;
return {
installOn: function (elem) {
diff --git a/web/gui/src/main/webapp/tests/fw/lib/keys-spec.js b/web/gui/src/main/webapp/tests/fw/lib/keys-spec.js
index d8fa818..eab2b82 100644
--- a/web/gui/src/main/webapp/tests/fw/lib/keys-spec.js
+++ b/web/gui/src/main/webapp/tests/fw/lib/keys-spec.js
@@ -20,10 +20,29 @@
@author Simon Hunt
*/
describe('factory: fw/lib/keys.js', function() {
- var ks, fs, d3Elem, elem, last;
+ var ks, fs, d3Elem, elem, last,
+ mockLog;
beforeEach(module('onosApp'));
+ // create mock log to verify warning was logged
+ beforeEach(module(function($provide) {
+ mockLog = {
+ warn: function (msg) {
+ mockLog._last.warn = msg;
+ },
+ _last: {},
+ _check: function (which) {
+ // destructive read
+ var m = mockLog._last[which];
+ mockLog._last[which] = null;
+ return m;
+ }
+ };
+ // tell angular to provide our mock, when '$log' service is requested
+ $provide.value('$log', mockLog);
+ }));
+
beforeEach(inject(function (KeyService, FnService) {
ks = KeyService;
fs = FnService;
@@ -195,4 +214,45 @@
verifyTestKeys();
});
+ it('should warn about masked keys', function () {
+ var k = {'space': cb, 'T': cb},
+ count = 0;
+ function cb() { count++; }
+
+ ks.keyBindings(k);
+
+ expect(mockLog._check('warn'))
+ .toEqual('setKeyBindings(): Key "T" is reserved');
+
+ // the 'T' key should NOT invoke our callback
+ expect(count).toEqual(0);
+ jsKeyDown(elem, 84); // 'T'
+ expect(count).toEqual(0);
+
+ // but the 'space' key SHOULD invoke our callback
+ jsKeyDown(elem, 32); // 'space'
+ expect(count).toEqual(1);
+ });
+
+ // === Gesture notes related tests
+ it('should start with no notes', function () {
+ expect(ks.gestureNotes()).toEqual([]);
+ });
+
+ it('should allow us to add nodes', function () {
+ var notes = [
+ ['one', 'something about one'],
+ ['two', 'description of two']
+ ];
+ ks.gestureNotes(notes);
+
+ expect(ks.gestureNotes()).toEqual(notes);
+ });
+
+ it('should ignore non-arrays', function () {
+ ks.gestureNotes({foo:4});
+ expect(ks.gestureNotes()).toEqual([]);
+ });
+
+ // Consider adding test to ensure array contains 2-tuples of strings
});