Merge branch '4.0'

This commit is contained in:
Dan Stillman 2016-09-18 18:39:18 -04:00
commit 21d3ca298b
7 changed files with 131 additions and 37 deletions

View file

@ -237,13 +237,14 @@ describe("Zotero.Utilities", function() {
}));
it("should map additional fields from Extra field", Zotero.Promise.coroutine(function* () {
let item = new Zotero.Item('journalArticle');
item.setField('extra', 'PMID: 12345\nPMCID:123456');
item.setField('extra', 'PMID: 12345\nPMCID:123456\nDOI:10.5064/F6PN93H4');
yield item.saveTx();
let cslJSON = Zotero.Utilities.itemToCSLJSON(item);
assert.equal(cslJSON.PMID, '12345', 'PMID from Extra is mapped to PMID');
assert.equal(cslJSON.PMCID, '123456', 'PMCID from Extra is mapped to PMCID');
assert.equal(cslJSON.DOI, '10.5064/F6PN93H4', 'DOI from Extra field is mapped to DOI');
item.setField('extra', 'PMID: 12345');
yield item.saveTx();
@ -251,20 +252,23 @@ describe("Zotero.Utilities", function() {
assert.equal(cslJSON.PMID, '12345', 'single-line entry is extracted correctly');
item.setField('extra', 'some junk: note\nPMID: 12345\nstuff in-between\nPMCID: 123456\nlast bit of junk!');
item.setField('extra', 'some junk: note\nPMID: 12345\nstuff in-between\nPMCID: 123456\nDOI: 10.5064/F6PN93H4\nlast bit of junk!');
yield item.saveTx();
cslJSON = Zotero.Utilities.itemToCSLJSON(item);
assert.equal(cslJSON.PMID, '12345', 'PMID from mixed Extra field is mapped to PMID');
assert.equal(cslJSON.PMCID, '123456', 'PMCID from mixed Extra field is mapped to PMCID');
assert.equal(cslJSON.DOI, '10.5064/F6PN93H4', 'DOI from mixed Extra field is mapped to DOI');
item.setField('extra', 'a\n PMID: 12345\nfoo PMCID: 123456');
item.setField('extra', 'a\n PMID: 12345\nfoo PMCID: 123456\n10.5064/F6PN93H4');
yield item.saveTx();
cslJSON = Zotero.Utilities.itemToCSLJSON(item);
assert.isUndefined(cslJSON.PMCID, 'field label must not be preceded by other text');
assert.isUndefined(cslJSON.PMID, 'field label must not be preceded by a space');
assert.equal(cslJSON.note, 'a\n PMID: 12345\nfoo PMCID: 123456', 'note is left untouched if nothing is extracted');
assert.isUndefined(cslJSON.DOI, 'DOI must be preceded by label');
assert.equal(cslJSON.note, 'a\n PMID: 12345\nfoo PMCID: 123456\n10.5064/F6PN93H4', 'note is left untouched if nothing is extracted');
item.setField('extra', 'something\npmid: 12345\n');
yield item.saveTx();