3
3
// 1. `npm install -g jasmine-node`
4
4
// 2. `jasmine-node spec`
5
5
6
- /*global describe, it, expect */
6
+ /* global describe, it, expect */
7
7
8
8
'use strict' ;
9
9
var postcss = require ( 'postcss' ) ;
10
10
var pxtorem = require ( '..' ) ;
11
11
var basicCSS = '.rule { font-size: 15px }' ;
12
12
13
13
describe ( 'pxtorem' , function ( ) {
14
-
15
14
it ( 'should work on the readme example' , function ( ) {
16
15
var input = 'h1 { margin: 0 0 20px; font-size: 32px; line-height: 1.2; letter-spacing: 1px; }' ;
17
16
var output = 'h1 { margin: 0 0 20px; font-size: 2rem; line-height: 1.2; letter-spacing: 0.0625rem; }' ;
@@ -27,6 +26,57 @@ describe('pxtorem', function () {
27
26
expect ( processed ) . toBe ( expected ) ;
28
27
} ) ;
29
28
29
+ it ( 'should ignore non px properties' , function ( ) {
30
+ var expected = '.rule { font-size: 2em }' ;
31
+ var processed = postcss ( pxtorem ( ) ) . process ( expected ) . css ;
32
+
33
+ expect ( processed ) . toBe ( expected ) ;
34
+ } ) ;
35
+
36
+ it ( 'should handle < 1 values and values without a leading 0' , function ( ) {
37
+ var rules = '.rule { margin: 0.5rem .5px -0.2px -.2em }' ;
38
+ var expected = '.rule { margin: 0.5rem 0.03125rem -0.0125rem -.2em }' ;
39
+ var options = {
40
+ propWhiteList : [ 'margin' ]
41
+ } ;
42
+ var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
43
+
44
+ expect ( processed ) . toBe ( expected ) ;
45
+ } ) ;
46
+
47
+ it ( 'should not add properties that already exist' , function ( ) {
48
+ var expected = '.rule { font-size: 16px; font-size: 1rem; }' ;
49
+ var processed = postcss ( pxtorem ( ) ) . process ( expected ) . css ;
50
+
51
+ expect ( processed ) . toBe ( expected ) ;
52
+ } ) ;
53
+ } ) ;
54
+
55
+ describe ( 'value parsing' , function ( ) {
56
+ it ( 'should not replace values in double quotes or single quotes' , function ( ) {
57
+ var options = {
58
+ propWhiteList : [ ]
59
+ } ;
60
+ var rules = '.rule { content: \'16px\'; font-family: "16px"; font-size: 16px; }' ;
61
+ var expected = '.rule { content: \'16px\'; font-family: "16px"; font-size: 1rem; }' ;
62
+ var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
63
+
64
+ expect ( processed ) . toBe ( expected ) ;
65
+ } ) ;
66
+
67
+ it ( 'should not replace values in `url()`' , function ( ) {
68
+ var options = {
69
+ propWhiteList : [ ]
70
+ } ;
71
+ var rules = '.rule { background: url(16px.jpg); font-size: 16px; }' ;
72
+ var expected = '.rule { background: url(16px.jpg); font-size: 1rem; }' ;
73
+ var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
74
+
75
+ expect ( processed ) . toBe ( expected ) ;
76
+ } ) ;
77
+ } ) ;
78
+
79
+ describe ( 'rootValue' , function ( ) {
30
80
// Deprecate
31
81
it ( 'should replace using a root value of 10 - legacy' , function ( ) {
32
82
var expected = '.rule { font-size: 1.5rem }' ;
@@ -47,7 +97,9 @@ describe('pxtorem', function () {
47
97
48
98
expect ( processed ) . toBe ( expected ) ;
49
99
} ) ;
100
+ } ) ;
50
101
102
+ describe ( 'unitPrecision' , function ( ) {
51
103
// Deprecate
52
104
it ( 'should replace using a decimal of 2 places - legacy' , function ( ) {
53
105
var expected = '.rule { font-size: 0.94rem }' ;
@@ -68,7 +120,9 @@ describe('pxtorem', function () {
68
120
69
121
expect ( processed ) . toBe ( expected ) ;
70
122
} ) ;
123
+ } ) ;
71
124
125
+ describe ( 'propWhiteList' , function ( ) {
72
126
// Deprecate
73
127
it ( 'should only replace properties in the white list - legacy' , function ( ) {
74
128
var expected = '.rule { font-size: 15px }' ;
@@ -100,7 +154,9 @@ describe('pxtorem', function () {
100
154
101
155
expect ( processed ) . toBe ( expected ) ;
102
156
} ) ;
157
+ } ) ;
103
158
159
+ describe ( 'selectorBlackList' , function ( ) {
104
160
// Deprecate
105
161
it ( 'should ignore selectors in the selector black list - legacy' , function ( ) {
106
162
var rules = '.rule { font-size: 15px } .rule2 { font-size: 15px }' ;
@@ -124,6 +180,30 @@ describe('pxtorem', function () {
124
180
expect ( processed ) . toBe ( expected ) ;
125
181
} ) ;
126
182
183
+ it ( 'should ignore every selector with `body$`' , function ( ) {
184
+ var rules = 'body { font-size: 16px; } .class-body$ { font-size: 16px; } .simple-class { font-size: 16px; }' ;
185
+ var expected = 'body { font-size: 1rem; } .class-body$ { font-size: 16px; } .simple-class { font-size: 1rem; }' ;
186
+ var options = {
187
+ selectorBlackList : [ 'body$' ]
188
+ } ;
189
+ var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
190
+
191
+ expect ( processed ) . toBe ( expected ) ;
192
+ } ) ;
193
+
194
+ it ( 'should only ignore exactly `body`' , function ( ) {
195
+ var rules = 'body { font-size: 16px; } .class-body { font-size: 16px; } .simple-class { font-size: 16px; }' ;
196
+ var expected = 'body { font-size: 16px; } .class-body { font-size: 1rem; } .simple-class { font-size: 1rem; }' ;
197
+ var options = {
198
+ selectorBlackList : [ / ^ b o d y $ / ]
199
+ } ;
200
+ var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
201
+
202
+ expect ( processed ) . toBe ( expected ) ;
203
+ } ) ;
204
+ } ) ;
205
+
206
+ describe ( 'replace' , function ( ) {
127
207
it ( 'should leave fallback pixel unit with root em value' , function ( ) {
128
208
var options = {
129
209
replace : false
@@ -133,7 +213,9 @@ describe('pxtorem', function () {
133
213
134
214
expect ( processed ) . toBe ( expected ) ;
135
215
} ) ;
216
+ } ) ;
136
217
218
+ describe ( 'mediaQuery' , function ( ) {
137
219
// Deprecate
138
220
it ( 'should replace px in media queries' , function ( ) {
139
221
var options = {
@@ -154,54 +236,9 @@ describe('pxtorem', function () {
154
236
155
237
expect ( processed ) . toBe ( expected ) ;
156
238
} ) ;
239
+ } ) ;
157
240
158
- it ( 'should ignore non px properties' , function ( ) {
159
- var expected = '.rule { font-size: 2em }' ;
160
- var processed = postcss ( pxtorem ( ) ) . process ( expected ) . css ;
161
-
162
- expect ( processed ) . toBe ( expected ) ;
163
- } ) ;
164
-
165
- it ( 'should handle < 1 values and values without a leading 0' , function ( ) {
166
- var rules = '.rule { margin: 0.5rem .5px -0.2px -.2em }' ;
167
- var expected = '.rule { margin: 0.5rem 0.03125rem -0.0125rem -.2em }' ;
168
- var options = {
169
- propWhiteList : [ 'margin' ]
170
- } ;
171
- var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
172
-
173
- expect ( processed ) . toBe ( expected ) ;
174
- } ) ;
175
-
176
- it ( 'should not add properties that already exist' , function ( ) {
177
- var expected = '.rule { font-size: 16px; font-size: 1rem; }' ;
178
- var processed = postcss ( pxtorem ( ) ) . process ( expected ) . css ;
179
-
180
- expect ( processed ) . toBe ( expected ) ;
181
- } ) ;
182
-
183
- it ( 'should not replace values in double quotes or single quotes' , function ( ) {
184
- var options = {
185
- propWhiteList : [ ]
186
- } ;
187
- var rules = '.rule { content: \'16px\'; font-family: "16px"; font-size: 16px; }' ;
188
- var expected = '.rule { content: \'16px\'; font-family: "16px"; font-size: 1rem; }' ;
189
- var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
190
-
191
- expect ( processed ) . toBe ( expected ) ;
192
- } ) ;
193
-
194
- it ( 'should not replace values in `url()`' , function ( ) {
195
- var options = {
196
- propWhiteList : [ ]
197
- } ;
198
- var rules = '.rule { background: url(16px.jpg); font-size: 16px; }' ;
199
- var expected = '.rule { background: url(16px.jpg); font-size: 1rem; }' ;
200
- var processed = postcss ( pxtorem ( options ) ) . process ( rules ) . css ;
201
-
202
- expect ( processed ) . toBe ( expected ) ;
203
- } ) ;
204
-
241
+ describe ( 'minPixelValue' , function ( ) {
205
242
it ( 'should not replace values below minPixelValue' , function ( ) {
206
243
var options = {
207
244
propWhiteList : [ ] ,
0 commit comments