commit 48a072d254caceaa23f54ea0b50b047dc2c7188f
parent 834597c8bbd73821afad2d84e9d615c312d299f1
Author: Dan Stillman <dstillman@zotero.org>
Date: Wed, 22 Jun 2016 05:56:53 -0400
Update library version after settings upload
Diffstat:
2 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/chrome/content/zotero/xpcom/sync/syncEngine.js b/chrome/content/zotero/xpcom/sync/syncEngine.js
@@ -843,6 +843,9 @@ Zotero.Sync.Data.Engine.prototype._uploadSettings = Zotero.Promise.coroutine(fun
Object.keys(settings),
libraryVersion
);
+ this.library.libraryVersion = libraryVersion;
+ yield this.library.save();
+
Zotero.debug("Done uploading settings in " + this.library.name);
return libraryVersion;
});
diff --git a/test/tests/syncEngineTest.js b/test/tests/syncEngineTest.js
@@ -791,6 +791,44 @@ describe("Zotero.Sync.Data.Engine", function () {
});
+ it("should update library version after settings upload", function* () {
+ ({ engine, client, caller } = yield setup());
+
+ var library = Zotero.Libraries.userLibrary;
+ var libraryID = library.id;
+ var lastLibraryVersion = 5;
+ library.libraryVersion = lastLibraryVersion;
+ yield library.saveTx();
+
+ yield Zotero.SyncedSettings.set(libraryID, "testSetting", { foo: "bar" });
+
+ server.respond(function (req) {
+ if (req.method == "POST") {
+ assert.equal(
+ req.requestHeaders["If-Unmodified-Since-Version"], lastLibraryVersion
+ );
+
+ if (req.url == baseURL + "users/1/settings") {
+ let json = JSON.parse(req.requestBody);
+ req.respond(
+ 204,
+ {
+ "Last-Modified-Version": ++lastLibraryVersion
+ },
+ ""
+ );
+ return;
+ }
+ }
+ })
+
+ yield engine.start();
+
+ assert.isAbove(library.libraryVersion, 5);
+ assert.equal(library.libraryVersion, lastLibraryVersion);
+ })
+
+
it("shouldn't include storage properties for attachments in ZFS libraries", function* () {
({ engine, client, caller } = yield setup());