Fix tag purging and Zotero.Tags.getName()
This commit is contained in:
parent
ac440b2b38
commit
f8684cc9d8
2 changed files with 56 additions and 4 deletions
|
@ -51,7 +51,7 @@ Zotero.Tags = new function() {
|
|||
throw new Error("tagID not provided");
|
||||
}
|
||||
if (_tagNamesByID[tagID]) {
|
||||
return _tagNamesByID[tagID].name;
|
||||
return _tagNamesByID[tagID];
|
||||
}
|
||||
_requireLoad(libraryID);
|
||||
return false;
|
||||
|
@ -394,7 +394,7 @@ Zotero.Tags = new function() {
|
|||
yield Zotero.DB.queryAsync(sql);
|
||||
|
||||
sql = "SELECT tagID AS id, libraryID, name FROM tagDelete JOIN tags USING (tagID)";
|
||||
var toDelete = yield Zotero.DB.columnQueryAsync(sql);
|
||||
var toDelete = yield Zotero.DB.queryAsync(sql);
|
||||
|
||||
if (!toDelete.length) {
|
||||
sql = "DROP TABLE tagDelete";
|
||||
|
@ -402,9 +402,11 @@ Zotero.Tags = new function() {
|
|||
}
|
||||
}
|
||||
|
||||
var ids = [];
|
||||
notifierData = {};
|
||||
for (let i=0; i<toDelete.length; i++) {
|
||||
let row = toDelete[i];
|
||||
ids.push(row.id);
|
||||
notifierData[row.id] = {
|
||||
old: {
|
||||
libraryID: row.libraryID,
|
||||
|
@ -415,7 +417,7 @@ Zotero.Tags = new function() {
|
|||
// Clear cached values
|
||||
delete _tagNamesByID[row.id];
|
||||
if (_tagIDsByName[row.libraryID]) {
|
||||
delete _tagIDsByName[row.libraryID]['_' + tagName];
|
||||
delete _tagIDsByName[row.libraryID]['_' + row.name];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -425,7 +427,7 @@ Zotero.Tags = new function() {
|
|||
sql = "DROP TABLE tagDelete";
|
||||
yield Zotero.DB.queryAsync(sql);
|
||||
|
||||
Zotero.Notifier.queue('delete', 'tag', toDelete, notifierData);
|
||||
Zotero.Notifier.queue('delete', 'tag', ids, notifierData);
|
||||
|
||||
Zotero.Prefs.set('purge.tags', false);
|
||||
});
|
||||
|
|
50
test/tests/tagsTest.js
Normal file
50
test/tests/tagsTest.js
Normal file
|
@ -0,0 +1,50 @@
|
|||
"use strict";
|
||||
|
||||
describe("Zotero.Tags", function () {
|
||||
describe("#getID()", function () {
|
||||
it("should return tag id", function* () {
|
||||
var tagName = Zotero.Utilities.randomString();
|
||||
var item = createUnsavedDataObject('item');
|
||||
item.addTag(tagName);
|
||||
yield item.saveTx();
|
||||
|
||||
assert.typeOf(Zotero.Tags.getID(Zotero.Libraries.userLibraryID, tagName), "number");
|
||||
})
|
||||
})
|
||||
|
||||
describe("#getName()", function () {
|
||||
it("should return tag id", function* () {
|
||||
var tagName = Zotero.Utilities.randomString();
|
||||
var item = createUnsavedDataObject('item');
|
||||
item.addTag(tagName);
|
||||
yield item.saveTx();
|
||||
|
||||
var tagID = Zotero.Tags.getID(Zotero.Libraries.userLibraryID, tagName);
|
||||
assert.equal(Zotero.Tags.getName(Zotero.Libraries.userLibraryID, tagID), tagName);
|
||||
})
|
||||
})
|
||||
|
||||
describe("#purge()", function () {
|
||||
it("should remove orphaned tags", function* () {
|
||||
var libraryID = Zotero.Libraries.userLibraryID;
|
||||
var tagName = Zotero.Utilities.randomString();
|
||||
var item = createUnsavedDataObject('item');
|
||||
item.addTag(tagName);
|
||||
yield item.saveTx();
|
||||
|
||||
var tagID = Zotero.Tags.getID(libraryID, tagName);
|
||||
assert.typeOf(tagID, "number");
|
||||
|
||||
yield item.eraseTx();
|
||||
|
||||
assert.equal(Zotero.Tags.getName(libraryID, tagID), tagName);
|
||||
|
||||
yield Zotero.DB.executeTransaction(function* () {
|
||||
yield Zotero.Tags.purge();
|
||||
});
|
||||
|
||||
yield Zotero.Tags.load(libraryID);
|
||||
assert.isFalse(Zotero.Tags.getName(libraryID, tagID));
|
||||
})
|
||||
})
|
||||
})
|
Loading…
Add table
Reference in a new issue