svgo-plugin-add-classes-to-colors
Version:
SVGO plugin that add corresponding class to element that has specific colors.
64 lines (56 loc) • 1.85 kB
JavaScript
;
const FS = require("fs");
const PATH = require("path");
const EOL = require("os").EOL;
const regEOL = new RegExp(EOL, "g");
const regFilename = /^(.*)\.(\d+)\.svg$/;
const plugin = require("../index.js");
const { optimize } = require("svgo");
describe("plugins tests", function () {
console.log(__dirname);
FS.readdirSync(__dirname).forEach(function (file) {
var match = file.match(regFilename),
index,
name;
if (match) {
name = match[1];
index = match[2];
file = PATH.resolve(__dirname, file);
it(name + "." + index, function () {
return readFile(file).then(function (data) {
// remove description
const items = normalize(data).split(/\s*===\s*/);
const test = items.length === 2 ? items[1] : items[0];
// extract test case
const [original, should, params] = test.split(/\s*@@@\s*/);
let lastResultData = original;
const multipass = 2;
for (let i = 0; i < multipass; i += 1) {
const result = optimize(lastResultData, {
path: file,
plugins: [
{ ...plugin, params: params ? JSON.parse(params) : {} },
],
js2svg: { pretty: true },
});
lastResultData = result.data;
expect(result.error).not.toEqual(expect.anything());
//FIXME: results.data has a '\n' at the end while it should not
expect(normalize(result.data)).toEqual(should);
}
});
});
}
});
});
function normalize(file) {
return file.trim().replace(regEOL, "\n");
}
function readFile(file) {
return new Promise(function (resolve, reject) {
FS.readFile(file, "utf8", function (err, data) {
if (err) return reject(err);
resolve(data);
});
});
}