Fix hasChanged() bug related to 'synced'
This commit is contained in:
parent
f02a9aa95e
commit
7075300a17
2 changed files with 37 additions and 19 deletions
|
@ -776,6 +776,7 @@ Zotero.DataObject.prototype.hasChanged = function() {
|
|||
var changed = Object.keys(this._changed).filter(dataType => this._changed[dataType]);
|
||||
if (changed.length == 1
|
||||
&& changed[0] == 'primaryData'
|
||||
&& Object.keys(this._changed.primaryData).length == 1
|
||||
&& this._changed.primaryData.synced
|
||||
&& this._previousData.synced == this._synced) {
|
||||
return false;
|
||||
|
|
|
@ -121,25 +121,6 @@ describe("Zotero.DataObject", function() {
|
|||
}
|
||||
});
|
||||
|
||||
it("shouldn't cause a save if unchanged and nothing else changed", function* () {
|
||||
for (let type of types) {
|
||||
var obj = createUnsavedDataObject(type);
|
||||
obj.synced = true;
|
||||
var id = yield obj.saveTx();
|
||||
assert.isTrue(obj.synced);
|
||||
|
||||
obj.synced = true;
|
||||
assert.isFalse(obj.hasChanged(), type + " shouldn't be changed");
|
||||
|
||||
var obj = createUnsavedDataObject(type);
|
||||
obj.synced = false;
|
||||
var id = yield obj.saveTx();
|
||||
assert.isFalse(obj.synced);
|
||||
obj.synced = false;
|
||||
assert.isFalse(obj.hasChanged(), type + " shouldn't be changed");
|
||||
}
|
||||
})
|
||||
|
||||
it("should be unchanged if skipSyncedUpdate passed", function* () {
|
||||
for (let type of types) {
|
||||
var obj = createUnsavedDataObject(type);
|
||||
|
@ -212,6 +193,42 @@ describe("Zotero.DataObject", function() {
|
|||
})
|
||||
})
|
||||
|
||||
|
||||
describe("#hasChanged()", function () {
|
||||
it("should return false if 'synced' was set but unchanged and nothing else changed", function* () {
|
||||
for (let type of types) {
|
||||
// True
|
||||
var obj = createUnsavedDataObject(type);
|
||||
obj.synced = true;
|
||||
var id = yield obj.saveTx();
|
||||
assert.isTrue(obj.synced);
|
||||
|
||||
obj.synced = true;
|
||||
assert.isFalse(obj.hasChanged(), type + " shouldn't be changed");
|
||||
|
||||
// False
|
||||
var obj = createUnsavedDataObject(type);
|
||||
obj.synced = false;
|
||||
var id = yield obj.saveTx();
|
||||
assert.isFalse(obj.synced);
|
||||
obj.synced = false;
|
||||
assert.isFalse(obj.hasChanged(), type + " shouldn't be changed");
|
||||
}
|
||||
})
|
||||
|
||||
it("should return true if 'synced' was set but unchanged and another primary field changed", function* () {
|
||||
for (let type of types) {
|
||||
let obj = createUnsavedDataObject(type);
|
||||
obj.synced = true;
|
||||
yield obj.saveTx();
|
||||
|
||||
obj.synced = true;
|
||||
obj.version = 1234;
|
||||
assert.isTrue(obj.hasChanged());
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
describe("#save()", function () {
|
||||
it("should add new identifiers to cache", function* () {
|
||||
// Collection
|
||||
|
|
Loading…
Add table
Reference in a new issue