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