@@ -46,11 +46,18 @@ describe('px-to-viewport', function() {
4646 } ) ;
4747
4848 it ( 'should not add properties that already exist' , function ( ) {
49- var expected = '.rule { font-size: 16px; font-size: 5vw; }' ;
50- var processed = postcss ( pxToViewport ( ) ) . process ( expected ) . css ;
49+ var expected = '.rule { font-size: 16px; font-size: 5vw; }' ;
50+ var processed = postcss ( pxToViewport ( ) ) . process ( expected ) . css ;
5151
52- expect ( processed ) . toBe ( expected ) ;
52+ expect ( processed ) . toBe ( expected ) ;
5353 } ) ;
54+
55+ it ( 'should not replace units inside mediaQueries by default' , function ( ) {
56+ var expected = '@media (min-width: 500px) { .rule { font-size: 16px } }' ;
57+ var processed = postcss ( pxToViewport ( ) ) . process ( '@media (min-width: 500px) { .rule { font-size: 16px } }' ) . css ;
58+
59+ expect ( processed ) . toBe ( expected ) ;
60+ } )
5461} ) ;
5562
5663describe ( 'value parsing' , function ( ) {
@@ -114,7 +121,7 @@ describe('viewportWidth', function() {
114121 var expected = '.rule { font-size: 3.125vw }' ;
115122 var options = {
116123 viewportWidth : 480
117- }
124+ } ;
118125 var processed = postcss ( pxToViewport ( options ) ) . process ( basicCSS ) . css ;
119126
120127 expect ( processed ) . toBe ( expected ) ;
@@ -123,13 +130,13 @@ describe('viewportWidth', function() {
123130
124131describe ( 'unitPrecision' , function ( ) {
125132 it ( 'should replace using a decimal of 2 places' , function ( ) {
126- var expected = '.rule { font-size: 4.69vw }' ;
127- var options = {
128- unitPrecision : 2
129- } ;
130- var processed = postcss ( pxToViewport ( options ) ) . process ( basicCSS ) . css ;
133+ var expected = '.rule { font-size: 4.69vw }' ;
134+ var options = {
135+ unitPrecision : 2
136+ } ;
137+ var processed = postcss ( pxToViewport ( options ) ) . process ( basicCSS ) . css ;
131138
132- expect ( processed ) . toBe ( expected ) ;
139+ expect ( processed ) . toBe ( expected ) ;
133140 } ) ;
134141} ) ;
135142
@@ -161,104 +168,114 @@ describe('fontViewportUnit', function() {
161168
162169describe ( 'selectorBlackList' , function ( ) {
163170 it ( 'should ignore selectors in the selector black list' , function ( ) {
164- var rules = '.rule { font-size: 15px } .rule2 { font-size: 15px }' ;
165- var expected = '.rule { font-size: 4.6875vw } .rule2 { font-size: 15px }' ;
166- var options = {
167- selectorBlackList : [ '.rule2' ]
168- } ;
169- var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
171+ var rules = '.rule { font-size: 15px } .rule2 { font-size: 15px }' ;
172+ var expected = '.rule { font-size: 4.6875vw } .rule2 { font-size: 15px }' ;
173+ var options = {
174+ selectorBlackList : [ '.rule2' ]
175+ } ;
176+ var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
170177
171- expect ( processed ) . toBe ( expected ) ;
178+ expect ( processed ) . toBe ( expected ) ;
172179 } ) ;
173180
174181 it ( 'should ignore every selector with `body$`' , function ( ) {
175- var rules = 'body { font-size: 16px; } .class-body$ { font-size: 16px; } .simple-class { font-size: 16px; }' ;
176- var expected = 'body { font-size: 5vw; } .class-body$ { font-size: 16px; } .simple-class { font-size: 5vw; }' ;
177- var options = {
178- selectorBlackList : [ 'body$' ]
179- } ;
180- var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
182+ var rules = 'body { font-size: 16px; } .class-body$ { font-size: 16px; } .simple-class { font-size: 16px; }' ;
183+ var expected = 'body { font-size: 5vw; } .class-body$ { font-size: 16px; } .simple-class { font-size: 5vw; }' ;
184+ var options = {
185+ selectorBlackList : [ 'body$' ]
186+ } ;
187+ var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
181188
182- expect ( processed ) . toBe ( expected ) ;
189+ expect ( processed ) . toBe ( expected ) ;
183190 } ) ;
184191
185192 it ( 'should only ignore exactly `body`' , function ( ) {
186- var rules = 'body { font-size: 16px; } .class-body { font-size: 16px; } .simple-class { font-size: 16px; }' ;
187- var expected = 'body { font-size: 16px; } .class-body { font-size: 5vw; } .simple-class { font-size: 5vw; }' ;
188- var options = {
189- selectorBlackList : [ / ^ b o d y $ / ]
190- } ;
191- var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
193+ var rules = 'body { font-size: 16px; } .class-body { font-size: 16px; } .simple-class { font-size: 16px; }' ;
194+ var expected = 'body { font-size: 16px; } .class-body { font-size: 5vw; } .simple-class { font-size: 5vw; }' ;
195+ var options = {
196+ selectorBlackList : [ / ^ b o d y $ / ]
197+ } ;
198+ var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
192199
193- expect ( processed ) . toBe ( expected ) ;
200+ expect ( processed ) . toBe ( expected ) ;
194201 } ) ;
195202} ) ;
196203
197204describe ( 'mediaQuery' , function ( ) {
198- it ( 'should replace px in media queries' , function ( ) {
199- var options = {
200- mediaQuery : true
201- } ;
202- var processed = postcss ( pxToViewport ( options ) ) . process ( '@media (min-width: 500px) { .rule { font-size: 16px } }' ) . css ;
203- var expected = '@media (min-width: 156.25vw ) { .rule { font-size: 5vw } }' ;
205+ it ( 'should replace px inside media queries if opts.mediaQuery ' , function ( ) {
206+ var options = {
207+ mediaQuery : true
208+ } ;
209+ var processed = postcss ( pxToViewport ( options ) ) . process ( '@media (min-width: 500px) { .rule { font-size: 16px } }' ) . css ;
210+ var expected = '@media (min-width: 500px ) { .rule { font-size: 5vw } }' ;
204211
205- expect ( processed ) . toBe ( expected ) ;
212+ expect ( processed ) . toBe ( expected ) ;
213+ } ) ;
214+
215+ it ( 'should not replace px inside media queries if not opts.mediaQuery' , function ( ) {
216+ var options = {
217+ mediaQuery : false
218+ } ;
219+ var processed = postcss ( pxToViewport ( options ) ) . process ( '@media (min-width: 500px) { .rule { font-size: 16px } }' ) . css ;
220+ var expected = '@media (min-width: 500px) { .rule { font-size: 16px } }' ;
221+
222+ expect ( processed ) . toBe ( expected ) ;
206223 } ) ;
207224} ) ;
208225
209226describe ( 'propList' , function ( ) {
210227 it ( 'should only replace properties in the prop list' , function ( ) {
211- var css = '.rule { font-size: 16px; margin: 16px; margin-left: 5px; padding: 5px; padding-right: 16px }' ;
212- var expected = '.rule { font-size: 5vw; margin: 5vw; margin-left: 5px; padding: 5px; padding-right: 5vw }' ;
213- var options = {
214- propList : [ '*font*' , 'margin*' , '!margin-left' , '*-right' , 'pad' ]
215- } ;
216- var processed = postcss ( pxToViewport ( options ) ) . process ( css ) . css ;
228+ var css = '.rule { font-size: 16px; margin: 16px; margin-left: 5px; padding: 5px; padding-right: 16px }' ;
229+ var expected = '.rule { font-size: 5vw; margin: 5vw; margin-left: 5px; padding: 5px; padding-right: 5vw }' ;
230+ var options = {
231+ propList : [ '*font*' , 'margin*' , '!margin-left' , '*-right' , 'pad' ]
232+ } ;
233+ var processed = postcss ( pxToViewport ( options ) ) . process ( css ) . css ;
217234
218- expect ( processed ) . toBe ( expected ) ;
235+ expect ( processed ) . toBe ( expected ) ;
219236 } ) ;
220237
221238 it ( 'should only replace properties in the prop list with wildcard' , function ( ) {
222- var css = '.rule { font-size: 16px; margin: 16px; margin-left: 5px; padding: 5px; padding-right: 16px }' ;
223- var expected = '.rule { font-size: 16px; margin: 5vw; margin-left: 5px; padding: 5px; padding-right: 16px }' ;
224- var options = {
225- propList : [ '*' , '!margin-left' , '!*padding*' , '!font*' ]
226- } ;
227- var processed = postcss ( pxToViewport ( options ) ) . process ( css ) . css ;
239+ var css = '.rule { font-size: 16px; margin: 16px; margin-left: 5px; padding: 5px; padding-right: 16px }' ;
240+ var expected = '.rule { font-size: 16px; margin: 5vw; margin-left: 5px; padding: 5px; padding-right: 16px }' ;
241+ var options = {
242+ propList : [ '*' , '!margin-left' , '!*padding*' , '!font*' ]
243+ } ;
244+ var processed = postcss ( pxToViewport ( options ) ) . process ( css ) . css ;
228245
229- expect ( processed ) . toBe ( expected ) ;
246+ expect ( processed ) . toBe ( expected ) ;
230247 } ) ;
231248
232249 it ( 'should replace all properties when prop list is not given' , function ( ) {
233- var rules = '.rule { margin: 16px; font-size: 15px }' ;
234- var expected = '.rule { margin: 5vw; font-size: 4.6875vw }' ;
235- var processed = postcss ( pxToViewport ( ) ) . process ( rules ) . css ;
250+ var rules = '.rule { margin: 16px; font-size: 15px }' ;
251+ var expected = '.rule { margin: 5vw; font-size: 4.6875vw }' ;
252+ var processed = postcss ( pxToViewport ( ) ) . process ( rules ) . css ;
236253
237- expect ( processed ) . toBe ( expected ) ;
254+ expect ( processed ) . toBe ( expected ) ;
238255 } ) ;
239256} ) ;
240257
241258describe ( 'minPixelValue' , function ( ) {
242259 it ( 'should not replace values below minPixelValue' , function ( ) {
243- var options = {
244- propWhiteList : [ ] ,
245- minPixelValue : 2
246- } ;
247- var rules = '.rule { border: 1px solid #000; font-size: 16px; margin: 1px 10px; }' ;
248- var expected = '.rule { border: 1px solid #000; font-size: 5vw; margin: 1px 3.125vw; }' ;
249- var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
260+ var options = {
261+ propWhiteList : [ ] ,
262+ minPixelValue : 2
263+ } ;
264+ var rules = '.rule { border: 1px solid #000; font-size: 16px; margin: 1px 10px; }' ;
265+ var expected = '.rule { border: 1px solid #000; font-size: 5vw; margin: 1px 3.125vw; }' ;
266+ var processed = postcss ( pxToViewport ( options ) ) . process ( rules ) . css ;
250267
251- expect ( processed ) . toBe ( expected ) ;
268+ expect ( processed ) . toBe ( expected ) ;
252269 } ) ;
253270} ) ;
254271
255272describe ( 'exclude' , function ( ) {
256273 var rules = '.rule { border: 1px solid #000; font-size: 16px; margin: 1px 10px; }' ;
257- var covered = '.rule { border: 1px solid #000; font-size: 5vw; margin: 1px 3.125vw; }'
274+ var covered = '.rule { border: 1px solid #000; font-size: 5vw; margin: 1px 3.125vw; }' ;
258275 it ( 'when using regex at the time, the style should not be overwritten.' , function ( ) {
259276 var options = {
260277 exclude : / n o d e _ m o d u l e s /
261- }
278+ } ;
262279 var processed = postcss ( pxToViewport ( options ) ) . process ( rules , {
263280 from : '/node_modules/main.css'
264281 } ) . css ;
@@ -269,7 +286,7 @@ describe('exclude', function () {
269286 it ( 'when using regex at the time, the style should be overwritten.' , function ( ) {
270287 var options = {
271288 exclude : / n o d e _ m o d u l e s /
272- }
289+ } ;
273290 var processed = postcss ( pxToViewport ( options ) ) . process ( rules , {
274291 from : '/example/main.css'
275292 } ) . css ;
@@ -280,7 +297,7 @@ describe('exclude', function () {
280297 it ( 'when using array at the time, the style should not be overwritten.' , function ( ) {
281298 var options = {
282299 exclude : [ / n o d e _ m o d u l e s / , / e x c l u d e / ]
283- }
300+ } ;
284301 var processed = postcss ( pxToViewport ( options ) ) . process ( rules , {
285302 from : '/exclude/main.css'
286303 } ) . css ;
@@ -291,7 +308,7 @@ describe('exclude', function () {
291308 it ( 'when using array at the time, the style should be overwritten.' , function ( ) {
292309 var options = {
293310 exclude : [ / n o d e _ m o d u l e s / , / e x c l u d e / ]
294- }
311+ } ;
295312 var processed = postcss ( pxToViewport ( options ) ) . process ( rules , {
296313 from : '/example/main.css'
297314 } ) . css ;
0 commit comments