zotero/test/tests/citeTest.js

50 lines
1.9 KiB
JavaScript

describe("Zotero.Cite", function () {
describe("#extraToCSL()", function () {
it("should convert Extra field values to the more restrictive citeproc-js cheater syntax", function () {
var str1 = 'Original Date: 2017\n' // uppercase/spaces converted to lowercase/hyphens
+ 'Archive-Place: New York\n' // allow hyphen even with title case
+ 'Container title: Title\n' // mixed case
+ 'DOI: 10.0/abc\n' // certain fields are uppercase
+ 'Archive Location: Foo\n' // requires an underscore
+ 'Original Publisher Place: London, UK\n' // extra space OK
+ 'Type: dataset'
+ '\n\n'
+ "Ignore other strings: they're not fields\n"
+ 'This is just some text.'
var str2 = 'original-date: 2017\n'
+ 'archive-place: New York\n'
+ 'container-title: Title\n'
+ 'DOI: 10.0/abc\n'
+ 'archive_location: Foo\n'
+ 'original-publisher-place: London, UK\n'
+ 'type: dataset'
+ '\n\n'
+ "Ignore other strings: they're not fields\n"
+ 'This is just some text.';
assert.equal(Zotero.Cite.extraToCSL(str1), str2);
});
it("should convert Zotero field names to CSL fields", function () {
var str1 = 'publicationTitle: My Publication';
var str2 = 'container-title: My Publication';
assert.equal(Zotero.Cite.extraToCSL(str1), str2);
});
it("should convert capitalized and spaced Zotero field names to CSL fields", function () {
var str1 = 'Publication Title: My Publication\nDate: 1989';
var str2 = 'container-title: My Publication\nissued: 1989';
assert.equal(Zotero.Cite.extraToCSL(str1), str2);
});
it("should convert lowercase 'doi' to uppercase", function () {
var str1 = 'doi: 10.0/abc';
var str2 = 'DOI: 10.0/abc';
assert.equal(Zotero.Cite.extraToCSL(str1), str2);
});
it("should handle a single-character field name", function () {
var str = 'a: ';
assert.equal(Zotero.Cite.extraToCSL(str), str);
});
});
});