Add retracted citation warning tests. Fix a bug with embedded prompts

This commit is contained in:
Adomas Venčkauskas 2019-07-04 15:16:18 +03:00
parent 82e7f67df8
commit cd14a536dc
2 changed files with 60 additions and 4 deletions

View file

@ -1968,14 +1968,14 @@ Zotero.Integration.Session.prototype.handleRetractedItems = async function () {
if (zoteroItem.cslItemID) {
embeddedZoteroItems.push(zoteroItem);
}
else if (Zotero.Retractions.isRetracted(zoteroItem)) {
else if (Zotero.Retractions.shouldShowCitationWarning(zoteroItem)) {
dealWithRetracted(zoteroItem, true);
}
}
}
var retractedIndices = await Promise.race(Zotero.Retractions.getRetractionsFromJSON(
var retractedIndices = await Promise.race([Zotero.Retractions.getRetractionsFromJSON(
embeddedZoteroItems.map(item => item.toJSON())
), Zotero.Promise.delay(1000).then(() => []));
), Zotero.Promise.delay(1000).then(() => [])]);
for (let index of retractedIndices) {
dealWithRetracted(embeddedZoteroItems[index]);
}

View file

@ -309,7 +309,7 @@ describe("Zotero.Integration", function () {
testItems = [];
for (let i = 0; i < 5; i++) {
let testItem = yield createDataObject('item', {libraryID: Zotero.Libraries.userLibraryID});
testItem.setField('title', `title${1}`);
testItem.setField('title', `title${i}`);
testItem.setCreator(0, {creatorType: 'author', name: `Author No${i}`});
testItems.push(testItem);
}
@ -815,6 +815,62 @@ describe("Zotero.Integration", function () {
setCodeSpy.restore();
})
});
describe('with retracted items', function () {
it('should display a retraction warning for a retracted item in a document', async function () {
var docID = this.test.fullTitle();
await initDoc(docID);
var doc = applications[docID].doc;
setAddEditItems(testItems[0]);
await execCommand('addEditCitation', docID);
let stub1 = sinon.stub(Zotero.Retractions, 'isRetracted').returns(true);
let stub2 = sinon.stub(Zotero.Retractions, 'shouldShowCitationWarning').returns(true);
let promise = execCommand('refresh', docID);
await assert.isFulfilled(waitForDialog());
stub1.restore();
stub2.restore();
await promise;
});
it('should display a retraction warning for an embedded retracted item in a document', async function () {
var docID = this.test.fullTitle();
await initDoc(docID);
var doc = applications[docID].doc;
let testItem = await createDataObject('item', { libraryID: Zotero.Libraries.userLibraryID });
testItem.setField('title', `embedded title`);
testItem.setCreator(0, { creatorType: 'author', name: `Embedded Author` });
setAddEditItems(testItem);
await execCommand('addEditCitation', docID);
await testItem.eraseTx();
let stub = sinon.stub(Zotero.Retractions, 'getRetractionsFromJSON').resolves([0]);
let promise = execCommand('refresh', docID);
await assert.isFulfilled(waitForDialog());
stub.restore();
await promise;
});
it('should not display retraction warning when disabled for a retracted item', async function () {
var docID = this.test.fullTitle();
await initDoc(docID);
var doc = applications[docID].doc;
let testItem = await createDataObject('item', { libraryID: Zotero.Libraries.userLibraryID });
testItem.setField('title', `title`);
testItem.setCreator(0, { creatorType: 'author', name: `Author` });
await Zotero.Retractions.disableCitationWarningsForItem(testItem);
setAddEditItems(testItem);
await execCommand('addEditCitation', docID);
await assert.isFulfilled(execCommand('refresh', docID));
await testItem.eraseTx();
});
});
});
describe('#addEditBibliography', function() {