Files
2026-09-08 20:28:54 +08:00

143 lines
4.0 KiB
JavaScript

/*global describe, it */
"use strict";
var fs = require("fs");
var assert = require("assert");
var postcss = require("postcss");
var urlrewrite = require("../index.js");
var fixture = function (name) {
return fs.readFileSync("test/fixtures/" + name + ".css", "utf8").trim();
};
var compareFixtures = function (name, options) {
var actual = postcss(urlrewrite(options)).process(fixture(name)).css.trim();
var expected = fixture(name + ".out");
return assert.equal(actual, expected);
};
describe("postcss-urlrewrite", function () {
describe("paths in absolute rules", function () {
it("should be replaced", function () {
var config = {
rules: [
{ from: "http://www.google.com/", to: "http://yandex.ru/" },
{ from: /^\//, to: "http://mysite.com/" },
],
};
compareFixtures("absolute", config);
});
});
describe("different file types", function () {
it("should return must not affect replacement", function () {
var config = {
rules: [{ from: "local", to: "global" }],
};
compareFixtures("backgrounds", config);
});
});
describe("data-uris", function () {
it("should be replaceable", function () {
var config = {
rules: function (uri) {
uri.href("image.png");
},
};
compareFixtures("datauri", config);
});
});
describe('only "content" and "cursor" properties', function () {
it("should be updated", function () {
var config = {
properties: ["content", "cursor"],
rules: [{ from: "local", to: "global" }],
};
compareFixtures("filter", config);
});
});
describe("fonts src with ie hacks", function () {
it("should be replaced without errors", function () {
var config = {
rules: [{ from: "local", to: "global" }],
};
compareFixtures("fonts", config);
});
});
describe('only "content" and "cursor" properties', function () {
it("should be updated", function () {
var config = {
imports: true,
properties: false,
rules: [{ from: "local", to: "global" }],
};
compareFixtures("imports", config);
});
});
describe("multiple url() in property value", function () {
it("should be replaced without errors", function () {
var config = {
rules: [{ from: "local", to: "global" }],
};
compareFixtures("multiple", config);
});
});
describe("all properties from css 2.1 spec", function () {
it("should be replaceable", function () {
var config = {
rules: [{ from: "local", to: "global" }],
};
compareFixtures("properties", config);
});
});
describe("if multiple rules match value", function () {
it("only first should trigger replace", function () {
var config = {
rules: [
{ from: /local\/test/, to: "$&1" },
{ from: /global\/test/, to: "$&2" },
{ from: /test/, to: "$&3" },
],
};
compareFixtures("rules", config);
});
});
describe('if properties value is "true"', function () {
it("it should not return error", function () {
var config = {
properties: true,
rules: [{ from: "local", to: "global" }],
};
compareFixtures("properties-default", config);
});
});
describe("if blank url()", function () {
it("it should not return error", function () {
var config = {
rules: [{ from: "local", to: "global" }],
};
compareFixtures("blank-url", config);
});
});
});