www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit c40a5a983c560c48d8edc1cff59c87edd95054cb
parent 5740d4729da98f1c386bb390579d21da862006f0
Author: Dan Stillman <dstillman@zotero.org>
Date:   Wed,  6 Jul 2016 02:07:37 -0400

Fix #1057, Item order is lost in saved search after item edit

Broken by 3dc0ad37

Diffstat:
Mchrome/content/zotero/xpcom/itemTreeView.js | 2+-
Mtest/tests/itemTreeViewTest.js | 29+++++++++++++++++++++++++++++
2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/chrome/content/zotero/xpcom/itemTreeView.js b/chrome/content/zotero/xpcom/itemTreeView.js @@ -658,7 +658,7 @@ Zotero.ItemTreeView.prototype.notify = Zotero.Promise.coroutine(function* (actio sort = true; } - if (collectionTreeRow.isFeed()) { + else if (collectionTreeRow.isFeed()) { this._ownerDocument.defaultView.ZoteroItemPane.setToggleReadLabel(); } diff --git a/test/tests/itemTreeViewTest.js b/test/tests/itemTreeViewTest.js @@ -432,6 +432,35 @@ describe("Zotero.ItemTreeView", function() { assert.equal(zp.itemsView.getRowIndexByID(item.id), 0); }); + it("should re-sort search results when an item is modified", function* () { + var search = yield createDataObject('search'); + itemsView = zp.itemsView; + var title = search.getConditions()[0].value; + + var item1 = yield createDataObject('item', { title: title + " 1" }); + var item2 = yield createDataObject('item', { title: title + " 3" }); + var item3 = yield createDataObject('item', { title: title + " 5" }); + var item4 = yield createDataObject('item', { title: title + " 7" }); + + var col = itemsView._treebox.columns.getNamedColumn('zotero-items-column-title'); + col.element.click(); + if (col.element.getAttribute('sortDirection') == 'ascending') { + col.element.click(); + } + + // Check initial sort order + assert.equal(itemsView.getRow(0).ref.getField('title'), title + " 7"); + assert.equal(itemsView.getRow(3).ref.getField('title'), title + " 1"); + + // Set first row to title that should be sorted in the middle + itemsView.getRow(0).ref.setField('title', title + " 4"); + yield itemsView.getRow(0).ref.saveTx(); + + assert.equal(itemsView.getRow(0).ref.getField('title'), title + " 5"); + assert.equal(itemsView.getRow(1).ref.getField('title'), title + " 4"); + assert.equal(itemsView.getRow(3).ref.getField('title'), title + " 1"); + }); + it("should update search results when search conditions are changed", function* () { var search = createUnsavedDataObject('search'); var title1 = Zotero.Utilities.randomString();