www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit d514f02c34c2443fbfafe42c817e73b890059f90
parent fc3b2c35384ad7aeb9534a829303089f48dad72c
Author: Simon Kornblith <simon@simonster.com>
Date:   Thu,  1 Mar 2012 20:54:05 -0500

Normalize fields when creating and running translator tests

Diffstat:
Mchrome/content/zotero/tools/testTranslators/translatorTester.js | 35+++++++++++++++++++++++++++++++----
1 file changed, 31 insertions(+), 4 deletions(-)

diff --git a/chrome/content/zotero/tools/testTranslators/translatorTester.js b/chrome/content/zotero/tools/testTranslators/translatorTester.js @@ -213,12 +213,39 @@ Zotero_TranslatorTester._sanitizeItem = function(item, forSave) { item = JSON.parse(JSON.stringify(item)); } catch(e) {}; - // remove fields to be ignored - const IGNORE_FIELDS = ["complete", "accessDate", "checkFields"]; - for(var j=0, n=IGNORE_FIELDS.length; j<n; j++) { - delete item[IGNORE_FIELDS[j]]; + // remove fields that don't exist or aren't valid for this item type, and normalize base fields + // to fields specific to this item + var fieldID, + typeID = Zotero.ItemTypes.getID(item.itemType); + const skipFields = ["note", "notes", "itemID", "attachments", "tags", "seeAlso", + "itemType", "complete", "creators"]; + for(var field in item) { + if(skipFields.indexOf(field) !== -1) continue; + + if(!item[field] || !(fieldID = Zotero.ItemFields.getID(field))) { + delete item[field]; + continue; + } + + if(Zotero.ItemFields.isBaseField(fieldID)) { + var value = item[field]; + delete item[field]; + + var itemFieldID = Zotero.ItemFields.getFieldIDFromTypeAndBase(typeID, fieldID); + if(itemFieldID) { + item[Zotero.ItemFields.getName(itemFieldID)] = value; + } + continue; + } + + if(!Zotero.ItemFields.isValidForType(fieldID, typeID)) { + delete item[field]; + } } + // remove fields to be ignored + if("accessDate" in item) delete item.accessDate; + return item; }; /**