--- /dev/null
+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);
+ });
+ });
+});