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