Set 'synced' to false automatically on save, unless value is changed

And add 'skipSyncedUpdate' option to leave untouched

Also move some save logic into Zotero.DataObject.prototype._saveData(),
and call that first.
This commit is contained in:
Dan Stillman 2015-05-13 19:30:22 -04:00
parent fa039971e6
commit 3f4eebe51c
5 changed files with 141 additions and 100 deletions

View file

@ -29,6 +29,62 @@ describe("Zotero.DataObject", function() {
})
})
describe("#synced", function () {
it("should be set to false after creating item", function* () {
var item = new Zotero.Item("book");
var id = yield item.saveTx();
item = yield Zotero.Items.getAsync(id);
assert.isFalse(item.synced);
yield Zotero.Items.erase(id);
});
it("should be set to true when changed", function* () {
var item = new Zotero.Item("book");
var id = yield item.saveTx();
item = yield Zotero.Items.getAsync(id);
item.synced = 1;
yield item.save();
assert.ok(item.synced);
yield Zotero.Items.erase(id);
});
it("should be set to false after modifying item", function* () {
var item = new Zotero.Item("book");
var id = yield item.saveTx();
item = yield Zotero.Items.getAsync(id);
item.synced = 1;
yield item.save();
yield item.loadItemData();
item.setField('title', 'test');
yield item.save();
assert.isFalse(item.synced);
yield Zotero.Items.erase(id);
});
it("should be unchanged if skipSyncedUpdate passed", function* () {
var item = new Zotero.Item("book");
var id = yield item.saveTx();
item = yield Zotero.Items.getAsync(id);
item.synced = 1;
yield item.save();
yield item.loadItemData();
item.setField('title', 'test');
yield item.save({
skipSyncedUpdate: true
});
assert.ok(item.synced);
yield Zotero.Items.erase(id);
});
})
describe("#save()", function () {
it("should add new identifiers to cache", function* () {
// Collection