epiphany/node_modules/postcss-import-ext-glob/test.js
2023-12-09 22:48:07 -08:00

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);
});