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.
 
 
 

133 lines
3.9 KiB

var browserSync = require("browser-sync");
var assert = require("chai").assert;
var path = require("path");
var OPTPATH = ['shakyshane', 'rewrite-rules', 'opts', '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("Rules given in Browsersync configuration", function() {
it("can work with simple string replacements", function(done) {
startWithRules([
{
match: "shane",
replace: "kittie"
}
], function (err, bs) {
var rules = bs.ui.options.getIn(OPTPATH).toJS();
var bsRules = bs.getOption('rewriteRules').toJS();
assert.deepEqual(
bsRules[0],
{
match: "shane",
replace: "kittie"
}
);
assert.equal(bs.options.get('rewriteRules').size, 1);
assert.equal(rules.length, 1);
assert.equal(rules[0].matchType, 'string');
assert.equal(rules[0].replaceType, 'string');
assert.equal(rules[0].replaceInput, 'kittie');
assert.equal(rules[0].matchInput, 'shane');
bs.cleanup(done);
});
});
it("can work with regex input", function(done) {
startWithRules([
{
match: /shane/g,
replace: "kittie"
}
], function (err, bs) {
var rules = bs.ui.options.getIn(OPTPATH).toJS();
var bsRules = bs.getOption('rewriteRules').toJS();
assert.equal(bsRules[0].match.source, 'shane');
assert.equal(bsRules[0].match.global, true);
assert.equal(bsRules[0].match.ignoreCase, false);
assert.equal(bsRules[0].match.multiline, false);
assert.equal(rules.length, 1);
assert.equal(rules[0].matchType, 'regex');
assert.equal(rules[0].matchInput, 'shane');
assert.equal(rules[0].matchFlags, 'g');
assert.equal(rules[0].replaceType, 'string');
assert.equal(rules[0].replaceInput, 'kittie');
bs.cleanup(done);
});
});
it("can work with regex input with new", function(done) {
startWithRules([
{
match: new RegExp("shane", "gi"),
replace: "kittie"
}
], function (err, bs) {
var rules = bs.ui.options.getIn(OPTPATH).toJS();
assert.equal(rules.length, 1);
assert.equal(rules[0].matchType, 'regex');
assert.equal(rules[0].matchInput, 'shane');
assert.equal(rules[0].matchFlags, 'gi');
assert.equal(rules[0].replaceType, 'string');
assert.equal(rules[0].replaceInput, 'kittie');
bs.cleanup(done);
});
});
it("can work with function replace", function(done) {
var fn = function () {
return 'kittie';
};
startWithRules([
{
match: "shane",
replace: fn
}
], function (err, bs) {
var rules = bs.ui.options.getIn(OPTPATH).toJS();
var bsRules = bs.getOption('rewriteRules').toJS();
assert.equal(bsRules[0].replace.toString(), fn.toString());
assert.equal(rules.length, 1);
assert.equal(rules[0].matchType, "string");
assert.equal(rules[0].matchInput, "shane");
assert.equal(rules[0].replaceType, "function");
assert.equal(rules[0].replaceInput, "return 'kittie';");
bs.cleanup(done);
});
});
});