Add Zotero.Integration.Citation

- Moves a bunch of citation related processing from Integration.Session
- Replaces missing item handling with a function instead of exception
- Solves some really confusing flow issues in _processFields
This commit is contained in:
Adomas Venčkauskas 2017-05-25 10:48:43 +03:00
parent a1acbd4038
commit f44d563a15
3 changed files with 329 additions and 422 deletions

View file

@ -273,14 +273,16 @@ describe("Zotero.Integration", function () {
function setAddEditItems(items) {
if (items.length == undefined) items = [items];
dialogResults.quickFormat = function(doc, dialogName) {
dialogResults.quickFormat = function(dialogName) {
var citationItems = items.map((i) => {return {id: i.id} });
var field = doc.insertField("Field", 0);
field.setCode('TEMP');
var field = new Zotero.Integration.CitationField(Zotero.Integration.currentDoc.insertField("Field", 0));
field.clearCode();
field.writeToDoc();
var citation = new Zotero.Integration.Citation(field);
var integrationDoc = addEditCitationSpy.lastCall.thisValue;
var fieldGetter = new Zotero.Integration.Fields(integrationDoc._session, integrationDoc._doc, () => 0);
var io = new Zotero.Integration.CitationEditInterface(
{ citationItems, properties: {} },
citation,
field,
fieldGetter,
integrationDoc._session
@ -313,10 +315,11 @@ describe("Zotero.Integration", function () {
// possible bug that reset() erases callsFake.
// @NOTE: https://github.com/sinonjs/sinon/issues/1341
// displayDialogStub.callsFake(function(doc, dialogName, prefs, io) {
function(doc, dialogName, prefs, io) {
function(dialogName, prefs, io) {
Zotero.debug(`Display dialog: ${dialogName}`, 2);
var ioResult = dialogResults[dialogName.substring(dialogName.lastIndexOf('/')+1, dialogName.length-4)];
if (typeof ioResult == 'function') {
ioResult = ioResult(doc, dialogName);
ioResult = ioResult(dialogName);
}
Object.assign(io, ioResult);
return Zotero.Promise.resolve();
@ -460,7 +463,7 @@ describe("Zotero.Integration", function () {
displayDialogStub.reset();
yield execCommand('addEditBibliography', docID);
assert.isTrue(displayDialogStub.calledOnce);
assert.isTrue(displayDialogStub.lastCall.args[1].includes('editBibliographyDialog'));
assert.isTrue(displayDialogStub.lastCall.args[0].includes('editBibliographyDialog'));
});
});
});