Add seed code for sdnr app based on ONF Centennial
[ccsdk/apps.git] / sdnr / wireless-transport / code-Carbon-SR1 / apps / dlux / dlux-web / src / common / navigation / navigation.spec.js
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.spec.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.spec.js
new file mode 100644 (file)
index 0000000..db4e4b1
--- /dev/null
@@ -0,0 +1,103 @@
+define(['common/navigation/navigation.module', 'angular-ui-router',], function () {
+  describe('Navigation Module', function () {
+    var scope, NavHelperMock, EventMock, controller;
+
+    beforeEach(angular.mock.module('ui.router'));
+    beforeEach(module('app.core', function ($provide) {
+      function NavHelperProvider() {
+        this.addToView = function (url) {};
+        this.addControllerUrl = function (url) {};
+        this.$get = function NavHelperFactory() {
+          return new NavHelperProvider();
+        };
+      }
+      $provide.provider('NavHelper', NavHelperProvider);
+    }));
+
+    beforeEach(module('app.common.nav'));
+
+    beforeEach(inject(function ($rootScope, $controller) {
+      scope = $rootScope.$new();
+      controller = $controller;
+
+      NavHelperMock = {
+        getMenu: function () {
+          return {
+            "id": "",
+            "title": "",
+            "active": "",
+            "submenu": ""
+          };
+        }
+      };
+
+      EventMock = {
+        stopPropagation: function () {
+          return null;
+        },
+        preventDefault: function () {
+          return null;
+        }
+      };
+
+    }));
+
+    it('Should have receive all menu items', function () {
+      spyOn(NavHelperMock, 'getMenu').andCallThrough();
+      controller('NavCtrl', {
+        $scope: scope,
+        NavHelper: NavHelperMock
+      });
+
+      expect(NavHelperMock.getMenu).toHaveBeenCalled();
+      expect(scope.navList).toBeDefined();
+    });
+
+    it('Should have create utility methods to show and hide submenu', function () {
+      controller('NavItemCtrl', {
+        $scope: scope,
+        NavHelper: NavHelperMock
+      });
+
+      expect(scope.display).toEqual('none');
+      expect(scope.isOpen).toBeFalsy();
+
+      expect(scope.isValid).toBeDefined();
+      expect(scope.updateTemplate).toBeDefined();
+    });
+
+    it('Should look if a item exist or not', function () {
+      controller('NavItemCtrl', {
+        $scope: scope,
+        NavHelper: NavHelperMock
+      });
+      var item = {};
+
+      expect(scope.isValid(item)).toBeTruthy();
+      expect(scope.isValid(null)).toBeFalsy();
+    });
+
+    it('Should toggle the status of the item scope', function () {
+      spyOn(EventMock, 'stopPropagation').andCallThrough();
+      spyOn(EventMock, 'preventDefault').andCallThrough();
+      controller('NavItemCtrl', {
+        $scope: scope,
+        NavHelper: NavHelperMock
+      });
+
+      var initOpen = scope.isOpen;
+      var initDisplay = scope.display;
+
+      scope.updateTemplate(EventMock, {});
+      expect(scope.isOpen).not.toEqual(initOpen);
+      expect(scope.display).not.toEqual(initDisplay);
+
+      scope.updateTemplate(EventMock, {});
+      expect(scope.isOpen).toEqual(initOpen);
+      expect(scope.display).toEqual(initDisplay);
+
+      expect(EventMock.stopPropagation.calls.length).toEqual(2);
+      expect(EventMock.preventDefault.calls.length).toEqual(2);
+    });
+  });
+});