diff --git a/chrome/content/zotero/xpcom/data/itemFields.js b/chrome/content/zotero/xpcom/data/itemFields.js index 29dcee2065..10834b570c 100644 --- a/chrome/content/zotero/xpcom/data/itemFields.js +++ b/chrome/content/zotero/xpcom/data/itemFields.js @@ -299,6 +299,7 @@ Zotero.ItemFields = new function() { * 'audioRecording' and 'label' returns publisher's fieldID * 'book' and 'publisher' returns publisher's fieldID * 'audioRecording' and 'runningTime' returns false + * 'note' and 'runningTime' returns false * * Accepts names or ids */ @@ -312,12 +313,8 @@ Zotero.ItemFields = new function() { _fieldCheck(typeField); - if (!this.isValidForType(typeFieldID, itemTypeID)) { - throw new Error("'" + typeField + "' is not a valid field for '" + itemType + "'"); - } - // If typeField is already a base field, just return that - if (this.isBaseField(typeFieldID)) { + if (_baseTypeFields[itemTypeID][typeFieldID]) { return typeFieldID; } diff --git a/test/tests/itemFieldsTest.js b/test/tests/itemFieldsTest.js index 0132a463d8..39e5a9b6ad 100644 --- a/test/tests/itemFieldsTest.js +++ b/test/tests/itemFieldsTest.js @@ -23,12 +23,25 @@ describe("Zotero.ItemFields", function () { Zotero.ItemFields.getBaseIDFromTypeAndField('book', 'publisher'), Zotero.ItemFields.getID('publisher') ); - }) + }); + + it("should return the base field id for an item type and base field when type has a base-mapped field", function () { + assert.equal( + Zotero.ItemFields.getBaseIDFromTypeAndField('hearing', 'number'), + Zotero.ItemFields.getID('number') + ); + }); it("should return false for an item type and non-base-mapped field", function* () { assert.isFalse( Zotero.ItemFields.getBaseIDFromTypeAndField('audioRecording', 'runningTime') ); - }) - }) + }); + + it("should return false for invalid type-field combination", function () { + assert.isFalse( + Zotero.ItemFields.getBaseIDFromTypeAndField('note', 'runningTime') + ); + }); + }); })