Add update verification button to sidebar
This commit is contained in:
@@ -96,6 +96,7 @@ let observer;
|
||||
const requests = [];
|
||||
const responses = [];
|
||||
let fetchFailure = false;
|
||||
let dismissNotice;
|
||||
const reply = (body, status = 200) => ({ ok: status < 400, status, async json() { return body; } });
|
||||
const app = { registerExtension(value) { extension = value; } };
|
||||
const api = {
|
||||
@@ -110,7 +111,11 @@ class MutationObserver {
|
||||
observe() {}
|
||||
disconnect() { this.disconnected = true; }
|
||||
}
|
||||
vm.runInNewContext(source, { app, api, document, window: {}, MutationObserver });
|
||||
const window = {
|
||||
setTimeout(callback) { dismissNotice = callback; return 1; },
|
||||
clearTimeout() { dismissNotice = null; },
|
||||
};
|
||||
vm.runInNewContext(source, { app, api, document, window, MutationObserver });
|
||||
|
||||
extension.setup();
|
||||
assert.ok(observer);
|
||||
@@ -130,14 +135,29 @@ toolbar.append(token, restart);
|
||||
observer.callback();
|
||||
|
||||
const update = document.querySelector("#o1key-update-button");
|
||||
const detect = document.querySelector("#o1key-detect-button");
|
||||
assert.equal(toolbar.children[0], token);
|
||||
assert.equal(toolbar.children[1], update);
|
||||
assert.equal(toolbar.children[2], restart);
|
||||
assert.equal(toolbar.children[2], detect);
|
||||
assert.equal(toolbar.children[3], restart);
|
||||
assert.equal(update.querySelector(".side-bar-button-label").textContent, "更新");
|
||||
assert.match(update.querySelector(".side-bar-button-icon").className, /pi-download/);
|
||||
assert.equal(detect.querySelector(".side-bar-button-label").textContent, "检测");
|
||||
assert.match(detect.querySelector(".side-bar-button-icon").className, /pi-check-circle/);
|
||||
assert.ok(observer.disconnected);
|
||||
extension.setup();
|
||||
assert.equal(toolbar.children.length, 3);
|
||||
assert.equal(toolbar.children.length, 4);
|
||||
|
||||
detect.listeners.get("click")();
|
||||
const notice = document.querySelector("#o1key-detect-notice");
|
||||
assert.equal(notice.children[1].textContent, "检测按钮已加载");
|
||||
assert.equal(notice.hidden, false);
|
||||
assert.equal(requests.length, 0);
|
||||
dismissNotice();
|
||||
assert.equal(notice.hidden, true);
|
||||
detect.listeners.get("click")();
|
||||
assert.equal(notice.hidden, false);
|
||||
assert.equal(document.body.children.filter((child) => child.id === "o1key-detect-notice").length, 1);
|
||||
|
||||
responses.push(reply({ update_available: false }));
|
||||
update.listeners.get("click")();
|
||||
|
||||
Reference in New Issue
Block a user