Increase test coverage: Add unit tests to the navigation module 97/21797/1
authorMaxime Millette-Coulombe <mmcoulombe@inocybe.com>
Wed, 3 Jun 2015 15:55:49 +0000 (11:55 -0400)
committerMaxime Millette-Coulombe <mmcoulombe@inocybe.com>
Wed, 3 Jun 2015 15:55:49 +0000 (11:55 -0400)
Change-Id: Icdf155349a251fff58ca1f034544d88ebadabfa6
Signed-off-by: Maxime Millette-Coulombe <mmcoulombe@inocybe.com>
modules/common-navigation-resources/src/main/resources/navigation/navigation.module.js
modules/common-navigation-resources/src/main/resources/navigation/navigation.spec.js [new file with mode: 0644]

index 8c97cea1745b1bc09dcc8d22000b190f3cbee870..913f93e517c43199ebfcddd0928e29666605e8c7 100644 (file)
@@ -1,6 +1,6 @@
 define(['angularAMD', 'app/core/core.module' ,'app/core/core.services','Restangular', 'common/config/env.module'], function (ng) {
   var nav = angular.module('app.common.nav', ['app.core','restangular', 'config']);
-
+  nav.register = nav;
   nav.config( function($stateProvider, $controllerProvider,$compileProvider, $provide, NavHelperProvider) {
 
     // use the register because the app is already bootstraped
diff --git a/modules/common-navigation-resources/src/main/resources/navigation/navigation.spec.js b/modules/common-navigation-resources/src/main/resources/navigation/navigation.spec.js
new file mode 100644 (file)
index 0000000..5aaa306
--- /dev/null
@@ -0,0 +1,91 @@
+define(['common/navigation/navigation.controller'], function() {
+  describe('Navigation Module', function(){
+    var scope, NavHelperMock, EventMock, controller, NavHelperProviderMock;
+
+    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);
+    });
+  });
+});