www

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

commit 55e9a0ee3508b1c0099c92f15f8b540d2768d05e
parent a57ea28d42d6229eea39a5d77ef336e567fece93
Author: Dan Stillman <dstillman@zotero.org>
Date:   Fri,  3 Feb 2017 01:17:08 -0500

Update empty state of parent collection when deleting subcollection

Diffstat:
Mchrome/content/zotero/xpcom/data/collection.js | 10++++++++++
Mtest/tests/collectionTest.js | 11+++++++++++
2 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/chrome/content/zotero/xpcom/data/collection.js b/chrome/content/zotero/xpcom/data/collection.js @@ -605,6 +605,16 @@ Zotero.Collection.prototype._eraseData = Zotero.Promise.coroutine(function* (env } } + // Update child collection cache of parent collection + if (this.parentKey) { + let parentCollectionID = this.ObjectsClass.getIDFromLibraryAndKey( + this.libraryID, this.parentKey + ); + Zotero.DB.addCurrentCallback("commit", function () { + this.ObjectsClass.unregisterChildCollection(parentCollectionID, this.id); + }.bind(this)); + } + var placeholders = collections.map(() => '?').join(); // Remove item associations for all descendent collections diff --git a/test/tests/collectionTest.js b/test/tests/collectionTest.js @@ -168,6 +168,17 @@ describe("Zotero.Collection", function() { var childCollections = collection1.getChildCollections(); assert.lengthOf(childCollections, 0); }) + + it("should not include collections that have been deleted", function* () { + var collection1 = yield createDataObject('collection'); + var collection2 = yield createDataObject('collection', { parentID: collection1.id }); + yield collection1.saveTx(); + + yield collection2.eraseTx() + + var childCollections = collection1.getChildCollections(); + assert.lengthOf(childCollections, 0); + }) }) describe("#getChildItems()", function () {