-
Notifications
You must be signed in to change notification settings - Fork 39
/
login-form.controller.spec.js
89 lines (78 loc) · 2.9 KB
/
login-form.controller.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import LoginFormController from './login-form.controller';
describe('LoginForm Controller', () => {
let controller;
let UserAPI;
let $state;
let $q;
let $rootScope;
beforeEach(() => {
angular.mock.inject((_$q_, _$rootScope_) => {
$q = _$q_;
$rootScope = _$rootScope_;
UserAPI = jasmine.createSpyObj('UserAPI', ['login']);
$state = jasmine.createSpyObj('$state', ['go']);
controller = new LoginFormController(UserAPI, $state);
});
});
describe('constructor function', () => {
it('should init successfully', () => {
expect(controller.UserAPI).toBe(UserAPI);
expect(controller.$state).toBe($state);
});
});
describe('login function', () => {
let deferred;
let credential;
beforeEach(() => {
credential = {
email: 'email',
password: 'password'
};
deferred = $q.defer();
UserAPI.login.and.returnValue(deferred.promise);
controller.loginForm = {};
});
it('should directly return when form is invalid', () => {
controller.loginForm.$invalid = true;
controller.login(credential);
expect(UserAPI.login).not.toHaveBeenCalled();
});
describe('success callback', () => {
beforeEach(() => {
deferred.resolve();
controller.login(credential);
});
it('should go to previous page after login', () => {
$state.prev = {
state: 'state',
params: 'params'
};
$rootScope.$digest();
expect($state.go).toHaveBeenCalledWith('state', 'params');
expect($state.prev).toBe(null);
});
it('should go to normal page after login', () => {
$state.prev = null;
controller.routeAfterLogin = 'routeAfterLogin';
$rootScope.$digest();
expect($state.go).toHaveBeenCalledWith('routeAfterLogin');
});
});
it('should call error function with invalid credential', () => {
controller.loginForm.$invalid = false;
spyOn(controller, '_setError');
deferred.reject({text: 'text'});
controller.login(credential);
$rootScope.$digest();
expect(controller._setError).toHaveBeenCalledWith('error', 'text');
expect(controller.isRequest).toBe(false);
});
});
describe('_setError function', () => {
it('should set passed in parameters to controller', () => {
controller._setError('type', 'text');
expect(controller.loginError.type).toEqual('type');
expect(controller.loginError.text).toEqual('text');
});
});
});