XuqmGroup-RNSDK/packages/common/tests/sdk.test.ts

44 行
1.4 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { _initializeFromConfigFile, awaitInitialization } from '../src/sdk'
const CONFIG_VECTOR =
'XUQM-CONFIG-V1.AAECAwQFBgcICQoLDA0ODw.EBESExQVFhcYGRob.vhdKh3AhEdeftXCdXp9KusVySkrBNAzmdaA747uf1tVWGFnAsJeCLe2mHKk0dxxez8SRTknIbk1UuRibnXY0Gbot1fmkR-jSN2ssMJO0_zQ8dUu8'
test('awaitInitialization observes in-flight work and retries a transient config request failure', async () => {
const originalFetch = globalThis.fetch
let requestCount = 0
globalThis.fetch = async () => {
requestCount += 1
if (requestCount === 1) {
throw new TypeError('Network request failed')
}
return new Response(
JSON.stringify({
data: {
apiUrl: 'https://api.example.test',
},
}),
{
headers: { 'content-type': 'application/json' },
status: 200,
},
)
}
try {
const autoInitialization = _initializeFromConfigFile(CONFIG_VECTOR, {
debug: true,
})
await assert.rejects(() => awaitInitialization(), /Network request failed/)
await assert.rejects(() => autoInitialization, /Network request failed/)
// 配置内容由 common 保存,扩展包再次等待时可以自行重试,无需宿主传递配置。
await assert.doesNotReject(() => awaitInitialization())
assert.equal(requestCount, 2)
} finally {
globalThis.fetch = originalFetch
}
})