185 lines
3.5 KiB
JavaScript
185 lines
3.5 KiB
JavaScript
|
const test = require('ava');
|
||
|
const PostcssTester = require('ava-postcss-tester');
|
||
|
|
||
|
const postcss = require('postcss');
|
||
|
const postcssImport = require('postcss-import');
|
||
|
|
||
|
const postcssImportExtGlob = require('.');
|
||
|
|
||
|
const tester = new PostcssTester({
|
||
|
postcss,
|
||
|
plugin: postcssImportExtGlob,
|
||
|
});
|
||
|
|
||
|
test('no @import-blog', async (t) => {
|
||
|
const input = `
|
||
|
@import "fixtures/css/foo/**/*.css";
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
@import "fixtures/css/foo/**/*.css";
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t);
|
||
|
});
|
||
|
|
||
|
test('simple test', async (t) => {
|
||
|
const input = `
|
||
|
@import-glob "fixtures/css/foo/**/*.css";
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
@import "${__dirname}/fixtures/css/foo/bar.css";
|
||
|
@import "${__dirname}/fixtures/css/foo/foo.css";
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t);
|
||
|
});
|
||
|
|
||
|
test('only changing @import-glob at rules', async (t) => {
|
||
|
const input = `
|
||
|
@import "fixtures/css/foo/**/*.css";
|
||
|
@import-glob "fixtures/css/foo/**/*.css";
|
||
|
@media (max-width: 600px) { .foo { color: red; } }
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
@import "fixtures/css/foo/**/*.css";
|
||
|
@import "${__dirname}/fixtures/css/foo/bar.css";
|
||
|
@import "${__dirname}/fixtures/css/foo/foo.css";
|
||
|
@media (max-width: 600px) { .foo { color: red; } }
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t);
|
||
|
});
|
||
|
|
||
|
test('simple test postcss-import', async (t) => {
|
||
|
const input = `
|
||
|
@import-glob "fixtures/css/foo/**/*.css";
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
.bar {
|
||
|
display: inline-block;
|
||
|
}
|
||
|
.foo {
|
||
|
display: block;
|
||
|
}
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t, {
|
||
|
pluginsAfter: [postcssImport],
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('sort option', async (t) => {
|
||
|
const input = `
|
||
|
@import-glob "fixtures/css/foo/**/*.css";
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
.foo {
|
||
|
display: block;
|
||
|
}
|
||
|
.bar {
|
||
|
display: inline-block;
|
||
|
}
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t, {
|
||
|
pluginOptions: {
|
||
|
sort: 'desc',
|
||
|
},
|
||
|
pluginsAfter: [postcssImport],
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('multiple globs', async (t) => {
|
||
|
const input = `
|
||
|
@import-glob "fixtures/css/foo/**/*.css";
|
||
|
@import-glob "fixtures/css/*.css";
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
.bar {
|
||
|
display: inline-block;
|
||
|
}
|
||
|
.foo {
|
||
|
display: block;
|
||
|
}
|
||
|
div {
|
||
|
margin: auto;
|
||
|
}
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t, {
|
||
|
pluginsAfter: [postcssImport],
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('multiple globs inline', async (t) => {
|
||
|
const input = `
|
||
|
@import-glob "fixtures/css/foo/**/*.css", "fixtures/css/*.css";
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
.bar {
|
||
|
display: inline-block;
|
||
|
}
|
||
|
.foo {
|
||
|
display: block;
|
||
|
}
|
||
|
div {
|
||
|
margin: auto;
|
||
|
}
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t, {
|
||
|
pluginsAfter: [postcssImport],
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('error empty param test', async (t) => {
|
||
|
const input = `
|
||
|
@import-glob;
|
||
|
`;
|
||
|
|
||
|
await tester.test(
|
||
|
input,
|
||
|
(err) => {
|
||
|
t.true(/No string found with rule @import-glob/.test(err));
|
||
|
},
|
||
|
t,
|
||
|
{
|
||
|
pluginsAfter: [postcssImport],
|
||
|
}
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test('no entries warning', async (t) => {
|
||
|
const warningsTester = new PostcssTester({
|
||
|
postcss,
|
||
|
plugin: postcssImportExtGlob,
|
||
|
tolerateWarnings: true,
|
||
|
});
|
||
|
const input = `
|
||
|
@import-glob "fixtures/css/_unknow/**/*.css";
|
||
|
`;
|
||
|
await warningsTester.test(input, '', t, {
|
||
|
pluginsAfter: [postcssImport],
|
||
|
});
|
||
|
});
|
||
|
|
||
|
test('layer test', async (t) => {
|
||
|
const input = `
|
||
|
@import-glob "fixtures/css/foo/**/*.css" layer(test);
|
||
|
`;
|
||
|
|
||
|
const output = `
|
||
|
@import "${__dirname}/fixtures/css/foo/bar.css" layer(test);
|
||
|
@import "${__dirname}/fixtures/css/foo/foo.css" layer(test);
|
||
|
`;
|
||
|
|
||
|
await tester.test(input, output, t);
|
||
|
});
|