Merge pull request #383 from kielni/replaceFilter_loop_var_name

fix variable hiding when finding filter to replace
This commit is contained in:
Rufus Pollock 2014-01-07 01:13:08 -08:00
commit a4475a05d2
2 changed files with 39 additions and 7 deletions

View File

@ -522,8 +522,8 @@ my.Query = Backbone.Model.extend({
// delete filter on the same field, then add
var filters = this.get('filters');
var idx = -1;
_.each(this.get('filters'), function(filter, key, list) {
if (filter.field == filter.field) {
_.each(this.get('filters'), function(f, key, list) {
if (filter.field == f.field) {
idx = key;
}
});

View File

@ -400,22 +400,54 @@ test('Query.addFilter', function () {
test('Query.replaceFilter', function () {
var query = new recline.Model.Query();
query.addFilter({type: 'term', field: 'xyz'});
query.addFilter({type: 'term', field: 'xyz', term: 'one'});
var exp = {
field: 'xyz',
type: 'term',
term: ''
term: 'one'
};
deepEqual(query.get('filters')[0], exp);
query.replaceFilter({type: 'term', field: 'abc'});
query.replaceFilter({type: 'term', field: 'xyz', term: 'two'});
exp = {
field: 'abc',
field: 'xyz',
type: 'term',
term: ''
term: 'two'
};
deepEqual(query.get('filters')[0], exp);
});
test('Query.replaceFilter first filter', function () {
// replaceFilter changes filter order
var query = new recline.Model.Query();
query.addFilter({type: 'term', field: 'abc', term: 'one'});
query.addFilter({type: 'term', field: 'xyz', term: 'two'});
var exp0 = {
field: 'abc',
type: 'term',
term: 'one'
};
deepEqual(query.get('filters')[0], exp0);
var exp1 = {
field: 'xyz',
type: 'term',
term: 'two'
};
deepEqual(query.get('filters')[1], exp1);
var numFilters = query.get('filters').length;
query.replaceFilter({type: 'term', field: 'abc', term: 'three'});
equal(query.get('filters').length, numFilters);
exp0 = {
field: 'abc',
type: 'term',
term: 'three'
};
// deletes original filter and adds replacement to end
deepEqual(query.get('filters')[1], exp0);
deepEqual(query.get('filters')[0], exp1);
});
})(this.jQuery);