184 lines
3.5 KiB
JavaScript
184 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);
|
|
});
|