mirror of
https://github.com/zotero/zotero.git
synced 2026-10-05 02:43:38 +00:00
showZoteroPaneProgressMeter() now returns a token capturing the previous message, meter mode and position, and owner, and restoreZoteroPaneProgressMeter() restores that state if no other operation has changed the display since, with nested tokens restoring in reverse order.
103 lines
3.9 KiB
JavaScript
103 lines
3.9 KiB
JavaScript
"use strict";
|
|
|
|
describe("Zotero", function() {
|
|
describe("#restoreZoteroPaneProgressMeter()", function () {
|
|
// A token captures the current display state, so taking one and immediately
|
|
// restoring it reads the state without changing it
|
|
function getProgressState() {
|
|
let token = Zotero.showZoteroPaneProgressMeter(undefined);
|
|
Zotero.restoreZoteroPaneProgressMeter(token);
|
|
return token;
|
|
}
|
|
|
|
afterEach(function () {
|
|
Zotero.hideZoteroPaneOverlays();
|
|
});
|
|
|
|
it("should restore nested progress displays to their previous owners", function () {
|
|
let token1 = Zotero.showZoteroPaneProgressMeter("One", true);
|
|
Zotero.updateZoteroPaneProgressMeter(30);
|
|
let token2 = Zotero.showZoteroPaneProgressMeter("Two");
|
|
|
|
// The new display should start with no percentage, so that a first update
|
|
// matching the previous meter's position isn't suppressed
|
|
assert.isNull(getProgressState().percentage);
|
|
|
|
// Restoring an outer token while an inner display is up should do nothing
|
|
Zotero.restoreZoteroPaneProgressMeter(token1);
|
|
assert.isTrue(Zotero.locked);
|
|
|
|
// Restoring the inner token should re-show the outer display, including its
|
|
// meter position, which is stored scaled by 10
|
|
Zotero.restoreZoteroPaneProgressMeter(token2);
|
|
let state = getProgressState();
|
|
assert.equal(state.message, "One");
|
|
assert.isTrue(state.determinate);
|
|
assert.equal(state.percentage, 300);
|
|
|
|
// Now the outer token can restore, unlocking the pane
|
|
Zotero.restoreZoteroPaneProgressMeter(token1);
|
|
assert.isFalse(Zotero.locked);
|
|
});
|
|
|
|
it("should capture a meter switched to indeterminate by updateZoteroPaneProgressMeter()", function () {
|
|
let token1 = Zotero.showZoteroPaneProgressMeter("One", true);
|
|
Zotero.updateZoteroPaneProgressMeter(null);
|
|
let token2 = Zotero.showZoteroPaneProgressMeter("Two");
|
|
assert.isFalse(token2.determinate);
|
|
assert.isNull(token2.percentage);
|
|
|
|
Zotero.restoreZoteroPaneProgressMeter(token2);
|
|
let state = getProgressState();
|
|
assert.isFalse(state.determinate);
|
|
assert.isNull(state.percentage);
|
|
|
|
Zotero.restoreZoteroPaneProgressMeter(token1);
|
|
assert.isFalse(Zotero.locked);
|
|
});
|
|
|
|
it("should capture a meter switched to determinate by updateZoteroPaneProgressMeter()", function () {
|
|
let token1 = Zotero.showZoteroPaneProgressMeter("One");
|
|
Zotero.updateZoteroPaneProgressMeter(40);
|
|
let token2 = Zotero.showZoteroPaneProgressMeter("Two");
|
|
assert.isTrue(token2.determinate);
|
|
assert.equal(token2.percentage, 400);
|
|
|
|
Zotero.restoreZoteroPaneProgressMeter(token2);
|
|
let state = getProgressState();
|
|
assert.isTrue(state.determinate);
|
|
assert.equal(state.percentage, 400);
|
|
|
|
Zotero.restoreZoteroPaneProgressMeter(token1);
|
|
assert.isFalse(Zotero.locked);
|
|
});
|
|
});
|
|
|
|
|
|
describe("VersionHeader", function () {
|
|
describe("#update()", function () {
|
|
var majorMinorVersion;
|
|
|
|
before(function () {
|
|
majorMinorVersion = Zotero.version.replace(/(\d+\.\d+).*/, '$1');
|
|
});
|
|
|
|
it("should replace app name with Firefox", function () {
|
|
var platformVersion = Services.appinfo.platformVersion.match(/^\d+/)[0] + '.0';
|
|
var ua1 = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 ${Zotero.clientName}/${Zotero.version}`;
|
|
var ua2 = `Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/${platformVersion} ${Zotero.clientName}/${Zotero.version}`;
|
|
assert.equal(Zotero.VersionHeader.update(ua1), ua2);
|
|
});
|
|
|
|
it("should show Chrome user agent unchanged", function () {
|
|
var ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36';
|
|
assert.equal(Zotero.VersionHeader.update(ua), ua);
|
|
});
|
|
|
|
it("should show Firefox user agent unchanged", function () {
|
|
var ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:60.0) Gecko/20100101 Firefox/60.0';
|
|
assert.equal(Zotero.VersionHeader.update(ua), ua);
|
|
});
|
|
});
|
|
});
|
|
});
|