mirror of
https://github.com/TommyFang2077/dsh-desktop.git
synced 2026-08-17 09:06:36 +08:00
feat: add mainland-reachable desktop distribution
This commit is contained in:
63
tests/shell_update.test.mjs
Normal file
63
tests/shell_update.test.mjs
Normal file
@@ -0,0 +1,63 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import test from 'node:test'
|
||||
|
||||
const nextTurn = () => new Promise(resolve => setImmediate(resolve))
|
||||
|
||||
function element(hidden = false) {
|
||||
return {
|
||||
disabled: false,
|
||||
hidden,
|
||||
textContent: '',
|
||||
listeners: new Map(),
|
||||
addEventListener(name, listener) {
|
||||
this.listeners.set(name, listener)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
test('startup waits for an available signed shell update decision', async () => {
|
||||
const elements = new Map([
|
||||
['status', element()],
|
||||
['spinner', element()],
|
||||
['retry', element(true)],
|
||||
['detail', element(true)],
|
||||
['update-panel', element(true)],
|
||||
['update-notes', element()],
|
||||
['install-update', element()],
|
||||
['skip-update', element()],
|
||||
])
|
||||
const invokes = []
|
||||
globalThis.document = {
|
||||
readyState: 'complete',
|
||||
getElementById(id) {
|
||||
return elements.get(id)
|
||||
},
|
||||
}
|
||||
globalThis.window = {
|
||||
__TAURI__: {
|
||||
event: { async listen() {} },
|
||||
core: {
|
||||
async invoke(command) {
|
||||
invokes.push(command)
|
||||
if (command === 'check_shell_update') {
|
||||
return { version: '1.2.3', notes: 'signed release' }
|
||||
}
|
||||
return null
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
await import(new URL('../ui/app.js?update-test', import.meta.url))
|
||||
await nextTurn()
|
||||
|
||||
assert.deepEqual(invokes, ['check_shell_update'])
|
||||
assert.equal(elements.get('status').textContent, '发现壳更新 1.2.3')
|
||||
assert.equal(elements.get('update-notes').textContent, 'signed release')
|
||||
assert.equal(elements.get('update-panel').hidden, false)
|
||||
|
||||
await elements.get('skip-update').listeners.get('click')()
|
||||
await nextTurn()
|
||||
assert.deepEqual(invokes, ['check_shell_update', 'skip_shell_update'])
|
||||
assert.equal(elements.get('update-panel').hidden, true)
|
||||
})
|
||||
Reference in New Issue
Block a user