commit 26e1372f46ca0222ffb7f73a1adb38dfea465292
parent 7879e5432a9e32a194d97f742e98befc964bb89f
Author: Dan Stillman <dstillman@zotero.org>
Date: Wed, 6 May 2015 04:16:54 -0400
Throw an error if item type isn't set when saving
And add a test for throwing from setField(), which already happens.
Diffstat:
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/chrome/content/zotero/xpcom/data/item.js b/chrome/content/zotero/xpcom/data/item.js
@@ -781,7 +781,7 @@ Zotero.Item.prototype.setField = function(field, value, loadIn) {
let itemTypeID = this.itemTypeID;
if (!itemTypeID) {
- throw ('Item type must be set before setting field data');
+ throw new Error('Item type must be set before setting field data');
}
var fieldID = Zotero.ItemFields.getID(field);
@@ -1173,7 +1173,10 @@ Zotero.Item.prototype._saveData = Zotero.Promise.coroutine(function* (env) {
var options = env.options;
var itemTypeID = this.itemTypeID;
-
+ if (!itemTypeID) {
+ throw new Error("Item type must be set before saving");
+ }
+
var sqlColumns = [];
var sqlValues = [];
var reloadParentChildItems = {};
diff --git a/test/tests/itemTest.js b/test/tests/itemTest.js
@@ -19,6 +19,11 @@ describe("Zotero.Item", function () {
});
describe("#setField", function () {
+ it("should throw an error if item type isn't set", function* () {
+ var item = new Zotero.Item;
+ assert.throws(item.setField.bind(item, 'title', 'test'), "Item type must be set before setting field data");
+ })
+
it("should mark a field as changed", function () {
var item = new Zotero.Item('book');
item.setField('title', 'Foo');