d11 theme
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

153 lines
4.4 KiB

var browserSync = require("browser-sync");
var assert = require("chai").assert;
var path = require("path");
var OPTPATH = ['shakyshane', 'rewrite-rules', 'rules'];
var plugin = path.resolve(__dirname, "../");
function startWithRules (rules, cb) {
browserSync.reset();
var bs = browserSync.create();
bs.init({
server: "test/fixtures",
logLevel: "silent",
rewriteRules: rules,
open: false,
plugins: [{module: plugin}]
}, cb);
}
describe("Adding rewrite rules", function() {
it("can add a string replacement", function (done) {
startWithRules([], function (err, bs) {
bs.ui.rewriteRules.addRule({
match: {
type: "string",
value: "shane"
},
replace: {
type: "string",
value: "kittie"
}
});
var rules = bs.ui.options.getIn(OPTPATH).toJS();
assert.equal(rules.length, 1);
var rule = rules[0];
assert.equal(rule.match, "shane");
assert.equal(rule.replace, "kittie");
assert.equal(rule.matchInput, "shane");
assert.equal(rule.matchType, "string");
assert.equal(rule.replaceType, "string");
assert.equal(rule.replaceInput, "kittie");
assert.equal(typeof rule.id === "string", true);
assert.equal(rule.active, true);
assert.equal(rule.paths.length, 0);
bs.cleanup(done);
});
});
it("can add a string with empty replace", function (done) {
startWithRules([], function (err, bs) {
bs.ui.rewriteRules.addRule({
match: {
type: "string",
value: "shane"
},
replace: {
type: "string",
value: ""
}
});
var rules = bs.ui.options.getIn(OPTPATH).toJS();
assert.equal(rules.length, 1);
var rule = rules[0];
assert.equal(rule.match, "shane");
assert.equal(rule.replace, "");
assert.equal(rule.matchInput, "shane");
assert.equal(rule.matchType, "string");
assert.equal(rule.replaceType, "string");
assert.equal(rule.replaceInput, "");
assert.equal(typeof rule.id === "string", true);
assert.equal(rule.active, true);
assert.equal(rule.paths.length, 0);
bs.cleanup(done);
});
});
it("can restore rules that may be partially missing", function (done) {
startWithRules([], function (err, bs) {
bs.ui.rewriteRules.replaceRules([
{
matchFlags: 'gi',
matchInput: 'bootstrap',
match: {},
active: true,
replaceType: 'function',
paths: [],
replaceInput: 'return "Browsersync";',
id: '904c5ebb657efb6df274653a3d65ade00eac61a5',
matchType: 'regex'
}
]);
var rules = bs.ui.options.getIn(OPTPATH).toJS();
assert.equal(rules.length, 1);
var rule = rules[0];
assert.isTrue(rule.match instanceof RegExp);
bs.cleanup(done);
});
});
it("can update existing rules", function (done) {
startWithRules([], function (err, bs) {
bs.ui.rewriteRules.addRule({
match: {
type: "string",
value: "shane"
},
replace: {
type: "string",
value: ""
}
});
var rules = bs.ui.options.getIn(OPTPATH).toJS();
const id = rules[0].id;
bs.ui.rewriteRules.addRule({
id: id,
match: {
type: "string",
value: "shane"
},
replace: {
type: "string",
value: "Some other string"
}
});
var rulesUpdated = bs.ui.options.getIn(OPTPATH).toJS();
console.log(rulesUpdated);
assert.equal(rulesUpdated[0].replaceInput, 'Some other string');
bs.cleanup(done);
});
});
});