Fix has helper tag matching

fixes #4780
This commit is contained in:
Hannah Wolfe 2015-01-09 21:52:23 +00:00
parent 33ce828a4a
commit 3f34162fd9
2 changed files with 27 additions and 1 deletions

View File

@ -25,7 +25,7 @@ has = function (options) {
return p || (_.findIndex(tags, function (item) {
// Escape regex special characters
item = item.replace(/[\-\/\\\^$*+?.()|\[\]{}]/g, '\\$&');
item = new RegExp(item, 'i');
item = new RegExp('^' + item + '$', 'i');
return item.test(c);
}) !== -1);
}, false);

View File

@ -44,6 +44,32 @@ describe('{{#has}} helper', function () {
inverse.called.should.be.false;
});
it('should match exact tags, not superstrings', function () {
var fn = sinon.spy(),
inverse = sinon.spy();
helpers.has.call(
{tags: [{name: 'magical'}]},
{hash: {tag: 'magic'}, fn: fn, inverse: inverse}
);
fn.called.should.be.false;
inverse.called.should.be.true;
});
it('should match exact tags, not substrings', function () {
var fn = sinon.spy(),
inverse = sinon.spy();
helpers.has.call(
{tags: [{name: 'magic'}]},
{hash: {tag: 'magical'}, fn: fn, inverse: inverse}
);
fn.called.should.be.false;
inverse.called.should.be.true;
});
it('should handle tag list that validates false', function () {
var fn = sinon.spy(),
inverse = sinon.spy();