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:
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 () {