1 |
|
2 |
|
3 |
|
4 |
|
5 | const assert = require('assert');
|
6 | const lib = require('./lib');
|
7 |
|
8 | describe('CSS Tests', function () {
|
9 | let compile;
|
10 | let fs;
|
11 |
|
12 | beforeEach(function () {
|
13 | process.env.FEBS_TEST = true;
|
14 |
|
15 |
|
16 | fs = lib.createFS();
|
17 |
|
18 |
|
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 | });
|