commit 7879e5432a9e32a194d97f742e98befc964bb89f
parent 33eaaffd832ad84e4305b8e25a5ff20232cff890
Author: Dan Stillman <dstillman@zotero.org>
Date: Wed, 6 May 2015 02:49:16 -0400
Fix new attachment charset saving, which I definitely didn't test before
Diffstat:
2 files changed, 27 insertions(+), 3 deletions(-)
diff --git 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
@@ -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";