UNPKG

8.02 kBJavaScriptView Raw
1/* eslint-env node, mocha */
2/* eslint-disable prefer-arrow-callback, func-names */
3
4// Dependencies.
5const assert = require('assert');
6const lib = require('./lib');
7
8describe('CSS Tests', function () {
9 let compile;
10 let fs;
11
12 beforeEach(function () {
13 process.env.FEBS_TEST = true;
14
15 // Keep reference to fs for test assertions.
16 fs = lib.createFS();
17
18 // Create compile function using in-memory fs and dev env.
19 compile = lib.createCompileFn(fs, 'development');
20 });
21
22 describe('CSS', async function () {
23 it('minifies CSS from webpack entry point', async function () {
24 const compiled = await compile(lib.createConf({
25 entry: {
26 app: lib.absPath('fixtures/src/styles/minify.css'),
27 },
28 }));
29
30 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
31
32 assert(!lib.compiledContains(compiled, {
33 content: /Resistance is futile./,
34 }));
35 });
36
37 it('compiles CSS from js entry point', async function () {
38 const compiled = await compile(lib.createConf({
39 entry: {
40 app: lib.absPath('fixtures/src/styles/main-with-css.js'),
41 },
42 }));
43
44 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
45
46 assert(lib.compiledContains(compiled, {
47 entryName: /^app$/,
48 content: /css-is-da-best/,
49 fileName: /\.css$/,
50 }));
51 });
52
53 it('compiles CSS from webpack entry point', async function () {
54 const compiled = await compile(lib.createConf({
55 entry: {
56 app: lib.absPath('fixtures/src/styles/main.css'),
57 },
58 }));
59
60 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
61
62 assert(lib.compiledContains(compiled, {
63 entryName: /^app$/,
64 content: /css-is-da-best/,
65 fileName: /\.css$/,
66 }));
67 });
68
69 it('compiles inline CSS within a vue component', async function () {
70 const compiled = await compile(lib.createConf({
71 entry: {
72 app: lib.absPath('fixtures/src/styles/css-app.vue'),
73 },
74 }));
75
76 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
77
78 assert(lib.compiledContains(compiled, {
79 entryName: /^app$/,
80 content: /details-import-from-css/,
81 fileName: /\.css$/,
82 }));
83 });
84
85 it('compiles imported CSS within a vue component', async function () {
86 const compiled = await compile(lib.createConf({
87 entry: {
88 app: lib.absPath('fixtures/src/styles/css-app.vue'),
89 },
90 }));
91
92 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
93
94 assert(lib.compiledContains(compiled, {
95 entryName: /^app$/,
96 content: /css-is-da-best/,
97 fileName: /\.css$/,
98 }));
99 });
100
101 it('autoprefixes css', async function () {
102 const compiled = await compile(lib.createConf({
103 entry: {
104 app: lib.absPath('fixtures/src/styles/autoprefix.css'),
105 },
106 }));
107
108 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
109
110 assert(lib.compiledContains(compiled, {
111 entryName: /^app$/,
112 content: /ms-/,
113 fileName: /\.css$/,
114 }));
115 });
116
117 it('imports css', async function () {
118 const compiled = await compile(lib.createConf({
119 entry: {
120 app: lib.absPath('fixtures/src/styles/imports.css'),
121 },
122 }));
123
124 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
125
126 assert(lib.compiledContains(compiled, {
127 entryName: /^app$/,
128 content: /css-is-da-best/,
129 fileName: /\.css$/,
130 }));
131 });
132 });
133
134
135 describe('LESS', async function () {
136 it('compiles LESS from js entry point', async function () {
137 const compiled = await compile(lib.createConf({
138 entry: {
139 app: lib.absPath('fixtures/src/styles/main-with-less.js'),
140 },
141 }));
142
143 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
144
145 assert(lib.compiledContains(compiled, {
146 entryName: /^app$/,
147 content: /border-color/,
148 fileName: /\.css$/,
149 }));
150 });
151
152 it('compiles LESS from webpack entry point', async function () {
153 const compiled = await compile(lib.createConf({
154 entry: {
155 app: lib.absPath('fixtures/src/styles/main.less'),
156 },
157 }));
158
159 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
160
161 assert(lib.compiledContains(compiled, {
162 entryName: /^app$/,
163 content: /less-is-da-best/,
164 fileName: /\.css$/,
165 }));
166 });
167
168 it('compiles inline LESS within a vue component', async function () {
169 const compiled = await compile(lib.createConf({
170 entry: {
171 app: lib.absPath('fixtures/src/styles/less-app.vue'),
172 },
173 }));
174
175 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
176
177 assert(lib.compiledContains(compiled, {
178 entryName: /^app$/,
179 content: /details-import-from-css/,
180 fileName: /\.css$/,
181 }));
182 });
183
184 it('compiles imported LESS within a vue component', async function () {
185 const compiled = await compile(lib.createConf({
186 entry: {
187 app: lib.absPath('fixtures/src/styles/less-app.vue'),
188 },
189 }));
190
191 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
192
193 assert(lib.compiledContains(compiled, {
194 entryName: /^app$/,
195 content: /less-is-da-best/,
196 fileName: /\.css$/,
197 }));
198 });
199
200 it('autoprefixes less', async function () {
201 const compiled = await compile(lib.createConf({
202 entry: {
203 app: lib.absPath('fixtures/src/styles/autoprefix.less'),
204 },
205 }));
206
207 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
208
209 assert(lib.compiledContains(compiled, {
210 entryName: /^app$/,
211 content: /ms-/,
212 fileName: /\.css$/,
213 }));
214 });
215 });
216
217 describe('SCSS', async function () {
218 it('compiles SCSS from js entry point', async function () {
219 const compiled = await compile(lib.createConf({
220 entry: {
221 app: lib.absPath('fixtures/src/styles/main-with-scss.js'),
222 },
223 }));
224
225 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
226
227 assert(lib.compiledContains(compiled, {
228 entryName: /^app$/,
229 content: /some-color-scss/,
230 fileName: /\.css$/,
231 }));
232 });
233
234 it('compiles inline SCSS within a vue component', async function () {
235 const compiled = await compile(lib.createConf({
236 entry: {
237 app: lib.absPath('fixtures/src/styles/scss-app.vue'),
238 },
239 }));
240
241 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
242
243 assert(lib.compiledContains(compiled, {
244 entryName: /^app$/,
245 content: /cool-scss/,
246 fileName: /\.css$/,
247 }));
248 });
249
250 it('compiles imported LESS within a vue component', async function () {
251 const compiled = await compile(lib.createConf({
252 entry: {
253 app: lib.absPath('fixtures/src/styles/less-app.vue'),
254 },
255 }));
256
257 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
258
259 assert(lib.compiledContains(compiled, {
260 entryName: /^app$/,
261 content: /less-is-da-best/,
262 fileName: /\.css$/,
263 }));
264 });
265
266 it('autoprefixes sass', async function () {
267 const compiled = await compile(lib.createConf({
268 entry: {
269 app: lib.absPath('fixtures/src/styles/autoprefix.scss'),
270 },
271 }));
272
273 assert(lib.compiledWithNoErrors(compiled), compiled.stats.compilation.errors);
274
275 assert(lib.compiledContains(compiled, {
276 entryName: /^app$/,
277 content: /ms-/,
278 fileName: /\.css$/,
279 }));
280 });
281 });
282});