Skip to content
This repository was archived by the owner on May 29, 2019. It is now read-only.

Commit 7de7a8e

Browse files
FoxandxssWesley Cho
authored and
Wesley Cho
committed
chore(tests): update to jasmine 2.x
Closes #3469 Implements #3458
1 parent dfe9854 commit 7de7a8e

File tree

14 files changed

+274
-150
lines changed

14 files changed

+274
-150
lines changed

Diff for: misc/test-lib/helpers.js

+47-15
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,57 @@
11
// jasmine matcher for expecting an element to have a css class
22
// https://github.com/angular/angular.js/blob/master/test/matchers.js
33
beforeEach(function() {
4-
this.addMatchers({
5-
toHaveClass: function(cls) {
6-
this.message = function() {
7-
return "Expected '" + this.actual + "'" + (this.isNot ? ' not ' : ' ') + "to have class '" + cls + "'.";
8-
};
4+
jasmine.addMatchers({
5+
toHaveClass: function(util, customEqualityTesters) {
6+
return {
7+
compare: function(actual, expected) {
8+
var result = {
9+
pass: actual.hasClass(expected)
10+
};
911

10-
return this.actual.hasClass(cls);
12+
if (result.pass) {
13+
result.message = 'Expected "' + actual + '" not to have the "' + expected + '" class.';
14+
} else {
15+
result.message = 'Expected "' + actual + '" to have the "' + expected + '" class.';
16+
}
17+
18+
return result;
19+
}
20+
}
1121
},
12-
toBeHidden: function () {
13-
var element = angular.element(this.actual);
14-
return element.hasClass('ng-hide') ||
15-
element.css('display') == 'none';
22+
toBeHidden: function(util, customEqualityTesters) {
23+
return {
24+
compare: function(actual) {
25+
var result = {
26+
pass: actual.hasClass('ng-hide') || actual.css('display') === 'none'
27+
};
28+
29+
if (result.pass) {
30+
result.message = 'Expected "' + actual + '" not to be hidden';
31+
} else {
32+
result.message = 'Expected "' + actual + '" to be hidden';
33+
}
34+
35+
return result;
36+
}
37+
}
1638
},
17-
toHaveFocus: function () {
18-
this.message = function () {
19-
return 'Expected \'' + angular.mock.dump(this.actual) + '\' to have focus';
20-
};
39+
toHaveFocus: function(util, customEqualityTesters) {
40+
return {
41+
compare: function(actual) {
42+
var result = {
43+
pass: document.activeElement === actual[0]
44+
};
45+
46+
if (result.pass) {
47+
result.message = 'Expected "' + actual + '" not to have focus';
48+
} else {
49+
result.message = 'Expected "' + actual + '" to have focus';
50+
}
2151

22-
return document.activeElement === this.actual[0];
52+
return result;
53+
}
54+
}
2355
}
2456
});
2557
});

Diff for: package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@
2222
"grunt-html2js": "^0.3.0",
2323
"grunt-karma": "^0.10.1",
2424
"grunt-ngdocs": "~0.1.1",
25+
"jasmine-core": "^2.2.0",
2526
"karma": "^0.12.31",
2627
"karma-chrome-launcher": "^0.1.7",
2728
"karma-coverage": "^0.2.7",
2829
"karma-firefox-launcher": "^0.1.4",
29-
"karma-jasmine": "^0.1.5",
30+
"karma-jasmine": "^0.3.5",
3031
"node-markdown": "0.1.1",
3132
"semver": "^4.3.3",
3233
"shelljs": "^0.4.0"

Diff for: src/buttons/test/buttons.spec.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ describe('buttons', function () {
201201
expect(btns.eq(1)).not.toHaveClass('active');
202202

203203
btns.eq(0).click();
204-
expect($scope.model).toEqual(undefined);
204+
expect($scope.model).toBeNull();
205205
expect(btns.eq(1)).not.toHaveClass('active');
206206
expect(btns.eq(0)).not.toHaveClass('active');
207207
});
@@ -225,4 +225,4 @@ describe('buttons', function () {
225225
});
226226
});
227227
});
228-
});
228+
});

Diff for: src/carousel/test/carousel.spec.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ describe('carousel', function() {
262262
testSlideActive(2);
263263
$interval.flush(scope.interval);
264264
testSlideActive(0);
265-
spyOn($interval, 'cancel').andCallThrough();
265+
spyOn($interval, 'cancel').and.callThrough();
266266
scope.$destroy();
267267
expect($interval.cancel).toHaveBeenCalled();
268268
});
@@ -396,17 +396,17 @@ describe('carousel', function() {
396396
});
397397

398398
it('issue 1414 - should not continue running timers after scope is destroyed', function() {
399-
spyOn(scope, 'next').andCallThrough();
399+
spyOn(scope, 'next').and.callThrough();
400400
scope.interval = 2000;
401401
scope.$digest();
402402

403403
$interval.flush(scope.interval);
404-
expect(scope.next.calls.length).toBe(1);
404+
expect(scope.next.calls.count()).toBe(1);
405405

406406
scope.$destroy();
407407

408408
$interval.flush(scope.interval);
409-
expect(scope.next.calls.length).toBe(1);
409+
expect(scope.next.calls.count()).toBe(1);
410410
});
411411
});
412412
});

Diff for: src/collapse/test/collapse.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,4 @@ describe('collapse directive', function () {
107107
});
108108

109109
});
110-
});
110+
});

Diff for: src/datepicker/test/datepicker.spec.js

+16-16
Original file line numberDiff line numberDiff line change
@@ -942,20 +942,20 @@ describe('datepicker directive', function () {
942942
});
943943

944944
it('executes the dateDisabled expression for each visible day plus one for validation', function() {
945-
expect($rootScope.dateDisabledHandler.calls.length).toEqual(42 + 1);
945+
expect($rootScope.dateDisabledHandler.calls.count()).toEqual(42 + 1);
946946
});
947947

948948
it('executes the dateDisabled expression for each visible month plus one for validation', function() {
949-
$rootScope.dateDisabledHandler.reset();
949+
$rootScope.dateDisabledHandler.calls.reset();
950950
clickTitleButton();
951-
expect($rootScope.dateDisabledHandler.calls.length).toEqual(12 + 1);
951+
expect($rootScope.dateDisabledHandler.calls.count()).toEqual(12 + 1);
952952
});
953953

954954
it('executes the dateDisabled expression for each visible year plus one for validation', function() {
955955
clickTitleButton();
956-
$rootScope.dateDisabledHandler.reset();
956+
$rootScope.dateDisabledHandler.calls.reset();
957957
clickTitleButton();
958-
expect($rootScope.dateDisabledHandler.calls.length).toEqual(20 + 1);
958+
expect($rootScope.dateDisabledHandler.calls.count()).toEqual(20 + 1);
959959
});
960960
});
961961

@@ -967,20 +967,20 @@ describe('datepicker directive', function () {
967967
});
968968

969969
it('executes the customClass expression for each visible day plus one for validation', function() {
970-
expect($rootScope.customClassHandler.calls.length).toEqual(42);
970+
expect($rootScope.customClassHandler.calls.count()).toEqual(42);
971971
});
972972

973973
it('executes the customClass expression for each visible month plus one for validation', function() {
974-
$rootScope.customClassHandler.reset();
974+
$rootScope.customClassHandler.calls.reset();
975975
clickTitleButton();
976-
expect($rootScope.customClassHandler.calls.length).toEqual(12);
976+
expect($rootScope.customClassHandler.calls.count()).toEqual(12);
977977
});
978978

979979
it('executes the customClass expression for each visible year plus one for validation', function() {
980980
clickTitleButton();
981-
$rootScope.customClassHandler.reset();
981+
$rootScope.customClassHandler.calls.reset();
982982
clickTitleButton();
983-
expect($rootScope.customClassHandler.calls.length).toEqual(20);
983+
expect($rootScope.customClassHandler.calls.count()).toEqual(20);
984984
});
985985
});
986986

@@ -1316,13 +1316,13 @@ describe('datepicker directive', function () {
13161316
expect(dropdownEl).toBeHidden();
13171317
expect(document.activeElement.tagName).toBe('INPUT');
13181318
});
1319-
1319+
13201320
it('stops the ESC key from propagating if the dropdown is open, but not when closed', function() {
13211321
expect(dropdownEl).not.toBeHidden();
13221322

13231323
dropdownEl.find('button').eq(0).focus();
13241324
expect(document.activeElement.tagName).toBe('BUTTON');
1325-
1325+
13261326
var documentKey = -1;
13271327
var getKey = function(evt) { documentKey = evt.which; };
13281328
$document.bind('keydown', getKey);
@@ -1331,10 +1331,10 @@ describe('datepicker directive', function () {
13311331
$rootScope.$digest();
13321332
expect(dropdownEl).toBeHidden();
13331333
expect(documentKey).toBe(-1);
1334-
1334+
13351335
triggerKeyDown(inputEl, 'esc');
13361336
expect(documentKey).toBe(27);
1337-
1337+
13381338
$document.unbind('keydown', getKey);
13391339
});
13401340
});
@@ -1731,7 +1731,7 @@ describe('datepicker directive', function () {
17311731
var $body = $document.find('body'),
17321732
bodyLength = $body.children().length,
17331733
elm = angular.element(
1734-
'<div><input datepicker-popup ng-model="date" datepicker-append-to-body="true"></input></div>'
1734+
'<div><input datepicker-popup ng-model="date" datepicker-append-to-body="true" /></div>'
17351735
);
17361736
$compile(elm)($rootScope);
17371737
$rootScope.$digest();
@@ -1744,7 +1744,7 @@ describe('datepicker directive', function () {
17441744
bodyLength = $body.children().length,
17451745
isolatedScope = $rootScope.$new(),
17461746
elm = angular.element(
1747-
'<input datepicker-popup ng-model="date" datepicker-append-to-body="true"></input>'
1747+
'<input datepicker-popup ng-model="date" datepicker-append-to-body="true" />'
17481748
);
17491749
$compile(elm)(isolatedScope);
17501750
isolatedScope.$digest();

Diff for: src/modal/test/modal.spec.js

+84-37
Original file line numberDiff line numberDiff line change
@@ -27,60 +27,107 @@ describe('$modal', function () {
2727
}));
2828

2929
beforeEach(function () {
30-
this.addMatchers({
30+
jasmine.addMatchers({
31+
toBeResolvedWith: function(util, customEqualityTesters) {
32+
return {
33+
compare: function(promise, expected) {
34+
promise.then(function(result) {
35+
expect(result).toEqual(expected);
3136

32-
toBeResolvedWith: function(value) {
33-
var resolved;
34-
this.message = function() {
35-
return 'Expected "' + angular.mock.dump(resolved) + '" to be resolved with "' + value + '".';
36-
};
37-
this.actual.then(function(result){
38-
resolved = result;
39-
});
40-
$rootScope.$digest();
37+
if (result === expected) {
38+
result.message = 'Expected "' + angular.mock.dump(result) + '" not to be resolved with "' + expected + '".';
39+
} else {
40+
result.message = 'Expected "' + angular.mock.dump(result) + '" to be resolved with "' + expected + '".';
41+
}
42+
});
4143

42-
return resolved === value;
43-
},
44+
$rootScope.$digest();
4445

45-
toBeRejectedWith: function(value) {
46-
var rejected;
47-
this.message = function() {
48-
return 'Expected "' + angular.mock.dump(rejected) + '" to be rejected with "' + value + '".';
46+
return {pass: true};
47+
}
4948
};
50-
this.actual.then(angular.noop, function(reason){
51-
rejected = reason;
52-
});
53-
$rootScope.$digest();
54-
55-
return rejected === value;
5649
},
50+
toBeRejectedWith: function(util, customEqualityTesters) {
51+
return {
52+
compare: function(promise, expected) {
53+
var result = {};
5754

58-
toHaveModalOpenWithContent: function(content, selector) {
55+
promise.then(function() {
5956

60-
var contentToCompare, modalDomEls = this.actual.find('body > div.modal > div.modal-dialog > div.modal-content');
57+
}, function(result) {
58+
expect(result).toEqual(expected);
6159

62-
this.message = function() {
63-
return '"Expected "' + angular.mock.dump(modalDomEls) + '" to be open with "' + content + '".';
64-
};
60+
if (result === expected) {
61+
result.message = 'Expected "' + angular.mock.dump(result) + '" not to be rejected with "' + expected + '".';
62+
} else {
63+
result.message = 'Expected "' + angular.mock.dump(result) + '" to be rejected with "' + expected + '".';
64+
}
65+
});
6566

66-
contentToCompare = selector ? modalDomEls.find(selector) : modalDomEls;
67-
return modalDomEls.css('display') === 'block' && contentToCompare.html() == content;
67+
$rootScope.$digest();
68+
69+
return {pass: true};
70+
}
71+
};
6872
},
73+
toHaveModalOpenWithContent: function(util, customEqualityTesters) {
74+
return {
75+
compare: function(actual, content, selector) {
76+
var contentToCompare, modalDomEls = actual.find('body > div.modal > div.modal-dialog > div.modal-content');
77+
78+
contentToCompare = selector ? modalDomEls.find(selector) : modalDomEls;
6979

70-
toHaveModalsOpen: function(noOfModals) {
80+
var result = {
81+
pass: modalDomEls.css('display') === 'block' && contentToCompare.html() === content
82+
};
7183

72-
var modalDomEls = this.actual.find('body > div.modal');
73-
return modalDomEls.length === noOfModals;
84+
if (result.pass) {
85+
result.message = '"Expected "' + angular.mock.dump(modalDomEls) + '" not to be open with "' + content + '".';
86+
} else {
87+
result.message = '"Expected "' + angular.mock.dump(modalDomEls) + '" to be open with "' + content + '".';
88+
}
89+
90+
return result;
91+
}
92+
};
7493
},
94+
toHaveModalsOpen: function(util, customEqualityTesters) {
95+
return {
96+
compare: function(actual, expected) {
97+
var modalDomEls = actual.find('body > div.modal');
98+
99+
var result = {
100+
pass: util.equals(modalDomEls.length, expected, customEqualityTesters)
101+
};
75102

76-
toHaveBackdrop: function() {
103+
if (result.pass) {
104+
result.message = 'Expected "' + angular.mock.dump(modalDomEls) + '" not to have "' + expected + '" modals opened.';
105+
} else {
106+
result.message = 'Expected "' + angular.mock.dump(modalDomEls) + '" to have "' + expected + '" modals opened.';
107+
}
77108

78-
var backdropDomEls = this.actual.find('body > div.modal-backdrop');
79-
this.message = function() {
80-
return 'Expected "' + angular.mock.dump(backdropDomEls) + '" to be a backdrop element".';
109+
return result;
110+
}
81111
};
112+
},
113+
toHaveBackdrop: function(util, customEqualityTesters) {
114+
return {
115+
compare: function(actual, expected) {
116+
var backdropDomEls = actual.find('body > div.modal-backdrop');
117+
118+
var result = {
119+
pass: util.equals(backdropDomEls.length, 1, customEqualityTesters)
120+
};
82121

83-
return backdropDomEls.length === 1;
122+
if (result.pass) {
123+
result.message = 'Expected "' + angular.mock.dump(backdropDomEls) + '" not to be a backdrop element".';
124+
} else {
125+
result.message = 'Expected "' + angular.mock.dump(backdropDomEls) + '" to be a backdrop element".';
126+
}
127+
128+
return result;
129+
}
130+
};
84131
}
85132
});
86133
});

0 commit comments

Comments
 (0)