This repository has been archived by the owner on Sep 5, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
/
media.spec.js
73 lines (57 loc) · 1.99 KB
/
media.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
describe('$mdMedia', function() {
var matchMediaResult;
var listeners;
function runListeners() {
listeners.forEach(function(cb) {
cb.context.matches = matchMediaResult;
cb.call(cb.context, cb.context);
});
}
beforeEach(module('material.core'));
beforeEach(inject(function($mdMedia, $window) {
matchMediaResult = false;
listeners = [];
spyOn($window, 'matchMedia').and.callFake(function(media) {
return {
media: media,
matches: matchMediaResult,
addListener: function(listener) {
listener.context = this;
listeners.push(listener);
}
};
});
}));
it('should look up queries in `$mdConstant.MEDIA`', inject(
function($mdConstant, $mdMedia, $window) {
$mdConstant.MEDIA.somePreset = 'someQuery';
$mdMedia('somePreset');
expect($window.matchMedia).toHaveBeenCalledWith('someQuery');
delete $mdConstant.MEDIA.somePreset;
}
));
it('should validate queries', inject(function($mdMedia, $window) {
$mdMedia('something');
expect($window.matchMedia).toHaveBeenCalledWith('(something)');
}));
it('should return cached results if available', inject(function($mdMedia, $window) {
expect($window.matchMedia.calls.count()).toBe(0);
expect($mdMedia('query')).toBe(false);
expect($window.matchMedia.calls.count()).toBe(1);
expect($mdMedia('query')).toBe(false);
expect($window.matchMedia.calls.count()).toBe(1);
}));
it('should change result when listener is called', inject(function($mdMedia, $window, $timeout) {
matchMediaResult = true;
expect($mdMedia('query')).toBe(true);
expect($window.matchMedia.calls.count()).toBe(1);
expect($mdMedia('query')).toBe(true);
expect($window.matchMedia.calls.count()).toBe(1);
matchMediaResult = false;
expect($mdMedia('query')).toBe(true);
expect($window.matchMedia.calls.count()).toBe(1);
runListeners();
$timeout.flush();
expect($mdMedia('query')).toBe(false);
}));
});