diff --git a/chrome/content/zotero/xpcom/data/cachedTypes.js b/chrome/content/zotero/xpcom/data/cachedTypes.js index 4568237d0..be3e04381 100644 --- a/chrome/content/zotero/xpcom/data/cachedTypes.js +++ b/chrome/content/zotero/xpcom/data/cachedTypes.js @@ -106,7 +106,6 @@ Zotero.CachedTypes = function() { if (!this._types['_' + idOrName]) { Zotero.debug('Invalid ' + this._typeDesc + ' ' + idOrName, 1); - Zotero.debug((new Error()).stack, 1); return false; } @@ -510,14 +509,14 @@ Zotero.CharacterSets = new function() { name = name.toLowerCase(); // Don't allow too-long or non-ASCII names - if (name.length > 50 || !name.match(/[^a-z0-9\-_]/)) { + if (name.length > 50 || !name.match(/^[a-z0-9\-_]+$/)) { return false; } var sql = "INSERT INTO " + this._table + " (" + this._nameCol + ") VALUES (?)"; yield Zotero.DB.queryAsync(sql, name); - sql = "SELECT id FROM " + this._table + " WHERE " + this._nameCol + "=?"; + sql = "SELECT " + this._idCol + " FROM " + this._table + " WHERE " + this._nameCol + "=?"; var id = yield Zotero.DB.valueQueryAsync(sql, name); this._cacheTypeData({ diff --git a/test/tests/itemTest.js b/test/tests/itemTest.js index d02d50aae..19fa7bbeb 100644 --- a/test/tests/itemTest.js +++ b/test/tests/itemTest.js @@ -201,6 +201,31 @@ describe("Zotero.Item", function () { }); }); + describe("#attachmentCharset", function () { + it("should get and set a value", function* () { + var charset = 'utf-8'; + var item = new Zotero.Item("attachment"); + item.attachmentLinkMode = Zotero.Attachments.LINK_MODE_IMPORTED_FILE; + item.attachmentCharset = charset; + var itemID = yield item.save(); + item = yield Zotero.Items.getAsync(itemID); + assert.equal(item.attachmentCharset, charset); + }) + + it("should not be marked as changed if not changed", function* () { + var charset = 'utf-8'; + var item = new Zotero.Item("attachment"); + item.attachmentLinkMode = Zotero.Attachments.LINK_MODE_IMPORTED_FILE; + item.attachmentCharset = charset; + var itemID = yield item.save(); + item = yield Zotero.Items.getAsync(itemID); + + // Set charset to same value + item.attachmentCharset = charset + assert.isFalse(item.hasChanged()); + }) + }) + describe("#attachmentFilename", function () { it("should get and set a filename for a stored file", function* () { var filename = "test.txt";