GUI -- TopoView - added skeleton topoFilter.js (WIP)
- fixed broken unit tests.

Change-Id: Ibeb85d2724d460b7e681ea2b247e5429ba3d5d7e
diff --git a/web/gui/src/main/webapp/app/index.html b/web/gui/src/main/webapp/app/index.html
index 3b05d23..f6e2be7 100644
--- a/web/gui/src/main/webapp/app/index.html
+++ b/web/gui/src/main/webapp/app/index.html
@@ -81,6 +81,7 @@
     <script src="view/sample/sample.js"></script>
     <script src="view/topo/topo.js"></script>
     <script src="view/topo/topoEvent.js"></script>
+    <script src="view/topo/topoFilter.js"></script>
     <script src="view/topo/topoForce.js"></script>
     <script src="view/topo/topoInst.js"></script>
     <script src="view/topo/topoModel.js"></script>
diff --git a/web/gui/src/main/webapp/app/view/topo/topoFilter.js b/web/gui/src/main/webapp/app/view/topo/topoFilter.js
new file mode 100644
index 0000000..eba31ae
--- /dev/null
+++ b/web/gui/src/main/webapp/app/view/topo/topoFilter.js
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Topology layer filtering Module.
+ Provides functionality to visually differentiate between the packet and
+ optical layers of the topology.
+ */
+
+(function () {
+    'use strict';
+
+    // injected refs
+    var $log, fs, flash, tps, tts;
+
+    // api to topoForce
+    var api;
+    /*
+     node()                         // get ref to D3 selection of nodes
+     */
+
+    // internal state
+
+
+    // === -----------------------------------------------------
+    // === MODULE DEFINITION ===
+
+    angular.module('ovTopo')
+        .factory('TopoFilterService',
+        ['$log', 'FnService',
+            'FlashService',
+            'TopoPanelService',
+            'TopoTrafficService',
+
+            function (_$log_, _fs_, _flash_, _tps_, _tts_) {
+                $log = _$log_;
+                fs = _fs_;
+                flash = _flash_;
+                tps = _tps_;
+                tts = _tts_;
+
+                function initFilter(_api_) {
+                    api = _api_;
+                }
+
+                function destroyFilter() { }
+
+                return {
+                    initFilter: initFilter,
+                    destroyFilter: destroyFilter
+                };
+            }]);
+}());
diff --git a/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js b/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
index 6fb1a60..e2b4868 100644
--- a/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/svg/svgUtil-spec.js
@@ -40,14 +40,15 @@
 
     it('should define api functions', function () {
         expect(fs.areFunctions(sus, [
-            'createDragBehavior', 'loadGlow', 'cat7', 'translate', 'stripPx',
-            'safeId', 'visible'
+            'createDragBehavior', 'loadGlowDefs', 'cat7',
+            'translate',
+            'stripPx', 'safeId', 'visible'
         ])).toBeTruthy();
     });
 
 
     // TODO: add unit tests for drag behavior
-    // TODO: add unit tests for loadGlow
+    // TODO: add unit tests for loadGlowDefs
 
     // === cat7
 
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoFilter-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoFilter-spec.js
new file mode 100644
index 0000000..983469c
--- /dev/null
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoFilter-spec.js
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Topo View -- Topo Filter Service - Unit Tests
+ */
+describe('factory: view/topo/topoFilter.js', function() {
+    var $log, fs, filter;
+
+    beforeEach(module('ovTopo', 'onosUtil', 'onosLayer'));
+
+    beforeEach(inject(function (_$log_, FnService, TopoFilterService) {
+        $log = _$log_;
+        fs = FnService;
+        filter = TopoFilterService;
+    }));
+
+    it('should define TopoFilterService', function () {
+        expect(filter).toBeDefined();
+    });
+
+    it('should define api functions', function () {
+        expect(fs.areFunctions(filter, [
+            'initFilter', 'destroyFilter'
+        ])).toBeTruthy();
+    });
+
+    // TODO: more tests...
+});
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js
index 546f2f9..17a0d09 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoForce-spec.js
@@ -37,7 +37,7 @@
             'initForce', 'newDim', 'destroyForce',
 
             'updateDeviceColors', 'toggleHosts', 'toggleOffline',
-            'cycleDeviceLabels', 'unpin',
+            'cycleDeviceLabels', 'unpin', 'showMastership',
 
             'addDevice', 'updateDevice', 'removeDevice',
             'addHost', 'updateHost', 'removeHost',
diff --git a/web/gui/src/main/webapp/tests/app/view/topo/topoInst-spec.js b/web/gui/src/main/webapp/tests/app/view/topo/topoInst-spec.js
index 8eefc4a..a6a1265 100644
--- a/web/gui/src/main/webapp/tests/app/view/topo/topoInst-spec.js
+++ b/web/gui/src/main/webapp/tests/app/view/topo/topoInst-spec.js
@@ -36,7 +36,8 @@
         expect(fs.areFunctions(tis, [
             'initInst', 'destroyInst',
             'addInstance', 'updateInstance', 'removeInstance',
-            'isVisible', 'show', 'hide', 'toggle'
+            'cancelAffinity',
+            'isVisible', 'show', 'hide', 'toggle', 'showMaster'
         ])).toBeTruthy();
     });