@@ -14,7 +14,9 @@ import {MatchMedia} from './match-media';
14
14
import { MediaObserver } from '../media-observer/media-observer' ;
15
15
16
16
describe ( 'match-media' , ( ) => {
17
- let matchMedia : MockMatchMedia ;
17
+ let breakPoints : BreakPointRegistry ;
18
+ let mediaController : MockMatchMedia ;
19
+ let mediaObserver : MediaObserver ;
18
20
19
21
beforeEach ( ( ) => {
20
22
// Configure testbed to prepare services
@@ -23,16 +25,22 @@ describe('match-media', () => {
23
25
} ) ;
24
26
} ) ;
25
27
26
- beforeEach ( inject ( [ MatchMedia ] , ( service : MockMatchMedia ) => {
27
- matchMedia = service ; // inject only to manually activate mediaQuery ranges
28
- } ) ) ;
28
+ beforeEach ( inject (
29
+ [ MediaObserver , MatchMedia , BreakPointRegistry ] ,
30
+ ( _mediaObserver : MediaObserver , _matchMedia : MockMatchMedia ,
31
+ _breakPoints : BreakPointRegistry ) => {
32
+ breakPoints = _breakPoints ;
33
+ mediaController = _matchMedia ; // inject only to manually activate mediaQuery ranges
34
+ mediaObserver = _mediaObserver ;
35
+ } ) ) ;
36
+
29
37
afterEach ( ( ) => {
30
- matchMedia . clearAll ( ) ;
38
+ mediaController . clearAll ( ) ;
31
39
} ) ;
32
40
33
41
it ( 'can observe the initial, default activation for mediaQuery == "all". ' , ( ) => {
34
42
let current : MediaChange = new MediaChange ( ) ;
35
- let subscription = matchMedia
43
+ let subscription = mediaController
36
44
. observe ( )
37
45
. subscribe ( ( change : MediaChange ) => {
38
46
current = change ;
@@ -48,20 +56,20 @@ describe('match-media', () => {
48
56
let query2 = '(min-width: 730px) and (max-width: 950px)' ;
49
57
50
58
const queries = [ query1 , query2 ] ;
51
- let subscription = matchMedia . observe ( queries ) . subscribe ( ( change : MediaChange ) => {
59
+ let subscription = mediaController . observe ( queries ) . subscribe ( ( change : MediaChange ) => {
52
60
current = change ;
53
61
} ) ;
54
62
55
63
expect ( current . mediaQuery ) . toEqual ( 'all' ) ; // default mediaQuery is active
56
- let activated = matchMedia . activate ( query1 ) ; // simulate mediaQuery change to Query1
64
+ let activated = mediaController . activate ( query1 ) ; // simulate mediaQuery change to Query1
57
65
expect ( activated ) . toEqual ( true ) ;
58
66
expect ( current . mediaQuery ) . toEqual ( query1 ) ;
59
- expect ( matchMedia . isActive ( query1 ) ) . toBeTruthy ( ) ;
67
+ expect ( mediaController . isActive ( query1 ) ) . toBeTruthy ( ) ;
60
68
61
- activated = matchMedia . activate ( query2 ) ; // simulate mediaQuery change to Query2
69
+ activated = mediaController . activate ( query2 ) ; // simulate mediaQuery change to Query2
62
70
expect ( activated ) . toEqual ( true ) ;
63
71
expect ( current . mediaQuery ) . toEqual ( query2 ) ; // confirm no notification
64
- expect ( matchMedia . isActive ( query2 ) ) . toBeTruthy ( ) ;
72
+ expect ( mediaController . isActive ( query2 ) ) . toBeTruthy ( ) ;
65
73
66
74
subscription . unsubscribe ( ) ;
67
75
} ) ;
@@ -71,131 +79,108 @@ describe('match-media', () => {
71
79
let query1 = 'screen and (min-width: 610px) and (max-width: 620px)' ;
72
80
let query2 = '(min-width: 730px) and (max-width: 950px)' ;
73
81
74
- matchMedia . registerQuery ( [ query1 , query2 ] ) ;
82
+ mediaController . registerQuery ( [ query1 , query2 ] ) ;
75
83
76
- let subscription = matchMedia . observe ( [ query1 ] , true ) . subscribe ( ( change : MediaChange ) => {
84
+ let subscription = mediaController . observe ( [ query1 ] , true ) . subscribe ( ( change : MediaChange ) => {
77
85
current = change ;
78
86
} ) ;
79
87
80
- activated = matchMedia . activate ( query1 ) ; // simulate mediaQuery change
88
+ activated = mediaController . activate ( query1 ) ; // simulate mediaQuery change
81
89
expect ( activated ) . toEqual ( true ) ;
82
90
expect ( current . mediaQuery ) . toEqual ( query1 ) ;
83
- expect ( matchMedia . isActive ( query1 ) ) . toBeTruthy ( ) ;
91
+ expect ( mediaController . isActive ( query1 ) ) . toBeTruthy ( ) ;
84
92
85
- activated = matchMedia . activate ( query2 ) ; // simulate mediaQuery change
93
+ activated = mediaController . activate ( query2 ) ; // simulate mediaQuery change
86
94
expect ( activated ) . toEqual ( true ) ;
87
- expect ( matchMedia . isActive ( query2 ) ) . toBeTruthy ( ) ;
95
+ expect ( mediaController . isActive ( query2 ) ) . toBeTruthy ( ) ;
88
96
89
97
expect ( current . mediaQuery ) . not . toEqual ( query2 ) ; // confirm no notification
90
98
expect ( current . mediaQuery ) . toEqual ( query1 ) ;
91
99
92
100
subscription . unsubscribe ( ) ;
93
101
} ) ;
94
102
95
- } ) ;
103
+ describe ( 'match-media-observable' , ( ) => {
96
104
97
- describe ( 'match-media-observable' , ( ) => {
98
- let breakPoints : BreakPointRegistry ;
99
- let matchMedia : MockMatchMedia ;
100
- let mediaObserver : MediaObserver ;
105
+ it ( 'can observe an existing activation' , ( ) => {
106
+ let current : MediaChange = new MediaChange ( ) ;
107
+ let bp = breakPoints . findByAlias ( 'md' ) ! ;
108
+ mediaController . activate ( bp . mediaQuery ) ;
109
+ let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
110
+ current = change ;
111
+ } ) ;
101
112
102
- beforeEach ( ( ) => {
103
- // Configure testbed to prepare services
104
- TestBed . configureTestingModule ( {
105
- providers : [ MockMatchMediaProvider ]
113
+ expect ( current . mediaQuery ) . toEqual ( bp . mediaQuery ) ;
114
+ subscription . unsubscribe ( ) ;
106
115
} ) ;
107
- } ) ;
108
116
109
- beforeEach ( inject (
110
- [ MediaObserver , MatchMedia , BreakPointRegistry ] ,
111
- ( _mediaObserver : MediaObserver , _matchMedia : MockMatchMedia ,
112
- _breakPoints : BreakPointRegistry ) => {
113
- matchMedia = _matchMedia ; // inject only to manually activate mediaQuery ranges
114
- breakPoints = _breakPoints ;
115
- mediaObserver = _mediaObserver ;
116
- } ) ) ;
117
- afterEach ( ( ) => {
118
- matchMedia . clearAll ( ) ;
119
- } ) ;
117
+ it ( 'can observe the initial, default activation for mediaQuery == "all". ' , ( ) => {
118
+ let current : MediaChange = new MediaChange ( ) ;
119
+ let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
120
+ current = change ;
121
+ } ) ;
120
122
121
- it ( 'can observe an existing activation' , ( ) => {
122
- let current : MediaChange = new MediaChange ( ) ;
123
- let bp = breakPoints . findByAlias ( 'md' ) ! ;
124
- matchMedia . activate ( bp . mediaQuery ) ;
125
- let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
126
- current = change ;
123
+ expect ( current . mediaQuery ) . toEqual ( 'all' ) ;
124
+ subscription . unsubscribe ( ) ;
127
125
} ) ;
128
126
129
- expect ( current . mediaQuery ) . toEqual ( bp . mediaQuery ) ;
130
- subscription . unsubscribe ( ) ;
131
- } ) ;
132
-
133
- it ( 'can observe the initial, default activation for mediaQuery == "all". ' , ( ) => {
134
- let current : MediaChange = new MediaChange ( ) ;
135
- let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
136
- current = change ;
137
- } ) ;
138
-
139
- expect ( current . mediaQuery ) . toEqual ( 'all' ) ;
140
- subscription . unsubscribe ( ) ;
141
- } ) ;
142
-
143
- it ( 'can observe custom mediaQuery ranges' , ( ) => {
144
- let current : MediaChange = new MediaChange ( ) ;
145
- let customQuery = 'screen and (min-width: 610px) and (max-width: 620px)' ;
146
- let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
147
- current = change ;
148
- } ) ;
127
+ it ( 'can observe custom mediaQuery ranges' , ( ) => {
128
+ let current : MediaChange = new MediaChange ( ) ;
129
+ let customQuery = 'screen and (min-width: 610px) and (max-width: 620px)' ;
130
+ let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
131
+ current = change ;
132
+ } ) ;
149
133
150
- matchMedia . useOverlaps = true ;
151
- let activated = matchMedia . activate ( customQuery ) ;
152
- expect ( activated ) . toEqual ( true ) ;
153
- expect ( current . mediaQuery ) . toEqual ( customQuery ) ;
134
+ mediaController . useOverlaps = true ;
135
+ let activated = mediaController . activate ( customQuery ) ;
136
+ expect ( activated ) . toEqual ( true ) ;
137
+ expect ( current . mediaQuery ) . toEqual ( customQuery ) ;
154
138
155
- subscription . unsubscribe ( ) ;
156
- } ) ;
157
-
158
- it ( 'can observe registered breakpoint activations' , ( ) => {
159
- let current : MediaChange = new MediaChange ( ) ;
160
- let bp = breakPoints . findByAlias ( 'md' ) ! ;
161
- let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
162
- current = change ;
139
+ subscription . unsubscribe ( ) ;
163
140
} ) ;
164
141
165
- let activated = matchMedia . activate ( bp . mediaQuery ) ;
166
- expect ( activated ) . toEqual ( true ) ;
142
+ it ( 'can observe registered breakpoint activations' , ( ) => {
143
+ let current : MediaChange = new MediaChange ( ) ;
144
+ let bp = breakPoints . findByAlias ( 'md' ) ! ;
145
+ let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
146
+ current = change ;
147
+ } ) ;
167
148
168
- expect ( current . mediaQuery ) . toEqual ( bp . mediaQuery ) ;
149
+ let activated = mediaController . activate ( bp . mediaQuery ) ;
150
+ expect ( activated ) . toEqual ( true ) ;
169
151
170
- subscription . unsubscribe ( ) ;
171
- } ) ;
152
+ expect ( current . mediaQuery ) . toEqual ( bp . mediaQuery ) ;
172
153
173
- /**
174
- * Only the MediaObserver ignores de-activations;
175
- * MediaMonitor and MatchMedia report both activations and de-activations!
176
- */
177
- it ( 'ignores mediaQuery de-activations' , ( ) => {
178
- let activationCount = 0 ;
179
- let deactivationCount = 0 ;
180
-
181
- mediaObserver . filterOverlaps = false ;
182
- let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
183
- if ( change . matches ) {
184
- ++ activationCount ;
185
- } else {
186
- ++ deactivationCount ;
187
- }
154
+ subscription . unsubscribe ( ) ;
188
155
} ) ;
189
156
190
- matchMedia . activate ( breakPoints . findByAlias ( 'md' ) ! . mediaQuery ) ;
191
- matchMedia . activate ( breakPoints . findByAlias ( 'gt-md' ) ! . mediaQuery ) ;
192
- matchMedia . activate ( breakPoints . findByAlias ( 'lg' ) ! . mediaQuery ) ;
193
-
194
- // 'all' mediaQuery is already active; total count should be (3)
195
- expect ( activationCount ) . toEqual ( 4 ) ;
196
- expect ( deactivationCount ) . toEqual ( 0 ) ;
157
+ /**
158
+ * Only the MediaObserver ignores de-activations;
159
+ * MediaMonitor and MatchMedia report both activations and de-activations!
160
+ */
161
+ it ( 'ignores mediaQuery de-activations' , ( ) => {
162
+ let activationCount = 0 ;
163
+ let deactivationCount = 0 ;
164
+
165
+ mediaObserver . filterOverlaps = false ;
166
+ let subscription = mediaObserver . media$ . subscribe ( ( change : MediaChange ) => {
167
+ if ( change . matches ) {
168
+ ++ activationCount ;
169
+ } else {
170
+ ++ deactivationCount ;
171
+ }
172
+ } ) ;
173
+
174
+ mediaController . activate ( breakPoints . findByAlias ( 'md' ) ! . mediaQuery ) ;
175
+ mediaController . activate ( breakPoints . findByAlias ( 'gt-md' ) ! . mediaQuery ) ;
176
+ mediaController . activate ( breakPoints . findByAlias ( 'lg' ) ! . mediaQuery ) ;
177
+
178
+ // 'all' mediaQuery is already active; total count should be (3)
179
+ expect ( activationCount ) . toEqual ( 4 ) ;
180
+ expect ( deactivationCount ) . toEqual ( 0 ) ;
181
+
182
+ subscription . unsubscribe ( ) ;
183
+ } ) ;
197
184
198
- subscription . unsubscribe ( ) ;
199
185
} ) ;
200
-
201
186
} ) ;
0 commit comments