--- /dev/null
+define(['common/login/login.controller', 'angular-ui-router', 'common/layout/layout.module'], function() {
+ describe('Login Module', function() {
+ var scope, state, controller, location, AuthMock;
+ var url = '/test';
+
+ beforeEach(module('ui.router'));
+ beforeEach(module('app.common.layout'));
+ beforeEach(module('app.common.login', function($provide) {
+ AuthMock = {
+ isAuthed: function() {},
+ login: function() {}
+ };
+ $provide.value('Auth', AuthMock);
+ }));
+
+ beforeEach(inject( function($rootScope, $controller, $state, $location) {
+ scope = $rootScope.$new();
+ controller = $controller;
+ state = $state;
+ location = $location;
+ }));
+
+ it('Should load the login state', function() {
+ var stateName = 'login';
+
+ controller('LoginCtrl', {$scope: scope, $state: state});
+ expect(state.href(stateName, {})).toBe('#/login');
+ });
+
+ it('Should redirect any url to login if not logged', function() {
+ var stateName = 'login';
+ spyOn(AuthMock,'isAuthed').andReturn(false);
+ location.url(url);
+ controller('LoginCtrl', {$scope: scope, $state: state});
+ state.go('main');
+
+ expect(AuthMock.isAuthed).toHaveBeenCalled();
+ expect(state.is("login"));
+ expect(location.url()).toEqual('/login');
+ });
+
+ it('Should not redirect if logged', function() {
+ spyOn(AuthMock,'isAuthed').andReturn(true);
+ location.url(url);
+ controller('LoginCtrl', {$scope: scope, $state: state});
+ state.go('main');
+
+ expect(AuthMock.isAuthed).toHaveBeenCalled();
+ expect(state.is("main"));
+ expect(location.url()).toEqual(url);
+ });
+
+ it('Should call the Auth module', function() {
+ spyOn(AuthMock,'login');
+ controller('LoginCtrl', {$scope: scope, $state: state});
+
+ scope.sendLogin();
+ expect(AuthMock.login).toHaveBeenCalled();
+ });
+ });
+});