Fix getAttachments()/getNotes() with no child items after save
This commit is contained in:
parent
8f2356f7c3
commit
a804efce67
2 changed files with 93 additions and 0 deletions
|
@ -1970,6 +1970,10 @@ Zotero.Item.prototype.getNotes = function(includeTrashed) {
|
||||||
|
|
||||||
this._requireData('childItems');
|
this._requireData('childItems');
|
||||||
|
|
||||||
|
if (!this._notes) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
var sortChronologically = Zotero.Prefs.get('sortNotesChronologically');
|
var sortChronologically = Zotero.Prefs.get('sortNotesChronologically');
|
||||||
var cacheKey = (sortChronologically ? "chronological" : "alphabetical")
|
var cacheKey = (sortChronologically ? "chronological" : "alphabetical")
|
||||||
+ 'With' + (includeTrashed ? '' : 'out') + 'Trashed';
|
+ 'With' + (includeTrashed ? '' : 'out') + 'Trashed';
|
||||||
|
@ -3112,6 +3116,10 @@ Zotero.Item.prototype.getAttachments = function(includeTrashed) {
|
||||||
|
|
||||||
this._requireData('childItems');
|
this._requireData('childItems');
|
||||||
|
|
||||||
|
if (!this._attachments) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
var cacheKey = (Zotero.Prefs.get('sortAttachmentsChronologically') ? 'chronological' : 'alphabetical')
|
var cacheKey = (Zotero.Prefs.get('sortAttachmentsChronologically') ? 'chronological' : 'alphabetical')
|
||||||
+ 'With' + (includeTrashed ? '' : 'out') + 'Trashed';
|
+ 'With' + (includeTrashed ? '' : 'out') + 'Trashed';
|
||||||
|
|
||||||
|
|
|
@ -311,6 +311,91 @@ describe("Zotero.Item", function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("#getAttachments()", function () {
|
||||||
|
it("#should return child attachments", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
var attachment = new Zotero.Item("attachment");
|
||||||
|
attachment.parentID = item.id;
|
||||||
|
attachment.attachmentLinkMode = Zotero.Attachments.LINK_MODE_IMPORTED_FILE;
|
||||||
|
yield attachment.saveTx();
|
||||||
|
|
||||||
|
var attachments = item.getAttachments();
|
||||||
|
assert.lengthOf(attachments, 1);
|
||||||
|
assert.equal(attachments[0], attachment.id);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("#should ignore trashed child attachments by default", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
var attachment = new Zotero.Item("attachment");
|
||||||
|
attachment.parentID = item.id;
|
||||||
|
attachment.attachmentLinkMode = Zotero.Attachments.LINK_MODE_IMPORTED_FILE;
|
||||||
|
attachment.deleted = true;
|
||||||
|
yield attachment.saveTx();
|
||||||
|
|
||||||
|
var attachments = item.getAttachments();
|
||||||
|
assert.lengthOf(attachments, 0);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("#should include trashed child attachments if includeTrashed=true", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
var attachment = new Zotero.Item("attachment");
|
||||||
|
attachment.parentID = item.id;
|
||||||
|
attachment.attachmentLinkMode = Zotero.Attachments.LINK_MODE_IMPORTED_FILE;
|
||||||
|
attachment.deleted = true;
|
||||||
|
yield attachment.saveTx();
|
||||||
|
|
||||||
|
var attachments = item.getAttachments(true);
|
||||||
|
assert.lengthOf(attachments, 1);
|
||||||
|
assert.equal(attachments[0], attachment.id);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("#should return an empty array for an item with no attachments", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
assert.lengthOf(item.getAttachments(), 0);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("#getNotes()", function () {
|
||||||
|
it("#should return child notes", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
var note = new Zotero.Item("note");
|
||||||
|
note.parentID = item.id;
|
||||||
|
yield note.saveTx();
|
||||||
|
|
||||||
|
var notes = item.getNotes();
|
||||||
|
assert.lengthOf(notes, 1);
|
||||||
|
assert.equal(notes[0], note.id);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("#should ignore trashed child notes by default", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
var note = new Zotero.Item("note");
|
||||||
|
note.parentID = item.id;
|
||||||
|
note.deleted = true;
|
||||||
|
yield note.saveTx();
|
||||||
|
|
||||||
|
var notes = item.getNotes();
|
||||||
|
assert.lengthOf(notes, 0);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("#should include trashed child notes if includeTrashed=true", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
var note = new Zotero.Item("note");
|
||||||
|
note.parentID = item.id;
|
||||||
|
note.deleted = true;
|
||||||
|
yield note.saveTx();
|
||||||
|
|
||||||
|
var notes = item.getNotes(true);
|
||||||
|
assert.lengthOf(notes, 1);
|
||||||
|
assert.equal(notes[0], note.id);
|
||||||
|
})
|
||||||
|
|
||||||
|
it("#should return an empty array for an item with no notes", function* () {
|
||||||
|
var item = yield createDataObject('item');
|
||||||
|
assert.lengthOf(item.getNotes(), 0);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe("#attachmentCharset", function () {
|
describe("#attachmentCharset", function () {
|
||||||
it("should get and set a value", function* () {
|
it("should get and set a value", function* () {
|
||||||
var charset = 'utf-8';
|
var charset = 'utf-8';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue