diff --git a/chrome/content/zotero/xpcom/search.js b/chrome/content/zotero/xpcom/search.js index a91da7ef1..02bffc7d5 100644 --- a/chrome/content/zotero/xpcom/search.js +++ b/chrome/content/zotero/xpcom/search.js @@ -440,7 +440,7 @@ Zotero.Search.prototype.removeCondition = function (searchConditionID) { this._requireData('conditions'); if (typeof this._conditions[searchConditionID] == 'undefined'){ - throw ('Invalid searchConditionID ' + searchConditionID + ' in removeCondition()'); + throw new Error('Invalid searchConditionID ' + searchConditionID + ' in removeCondition()'); } delete this._conditions[searchConditionID]; @@ -825,7 +825,7 @@ Zotero.Search.prototype.fromJSON = function (json) { } this.name = json.name; - Object.keys(this.getConditions()).forEach(id => this.removeCondition(0)); + Object.keys(this.getConditions()).forEach(id => this.removeCondition(id)); for (let i = 0; i < json.conditions.length; i++) { let condition = json.conditions[i]; this.addCondition( diff --git a/test/content/support.js b/test/content/support.js index 8c5636cef..6b660f499 100644 --- a/test/content/support.js +++ b/test/content/support.js @@ -386,6 +386,7 @@ function createUnsavedDataObject(objectType, params = {}) { if (objectType == 'search') { obj.addCondition('title', 'contains', Zotero.Utilities.randomString()); + obj.addCondition('title', 'isNot', Zotero.Utilities.randomString()); } Zotero.Utilities.assignProps(obj, params, allowedParams); diff --git a/test/tests/searchTest.js b/test/tests/searchTest.js index 2d20f2b93..c62f31084 100644 --- a/test/tests/searchTest.js +++ b/test/tests/searchTest.js @@ -221,6 +221,7 @@ describe("Zotero.Search", function() { let s = new Zotero.Search(); s.name = "Test"; s.addCondition('joinMode', 'any'); + s.addCondition('title', 'isNot', 'foo'); let json = s.toJSON(); json.name = "Test 2"; json.conditions = [