修复云端数据一致性问题
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
const test = require('node:test')
|
||||
const assert = require('node:assert/strict')
|
||||
|
||||
const {
|
||||
memberKey,
|
||||
findMyEntry,
|
||||
publicRanked
|
||||
} = require('../cloudfunctions/leaderboard/data')
|
||||
const { cachedFileId } = require('../cloudfunctions/tts/cache')
|
||||
const { deleteAllPages } = require('../utils/cloud-delete')
|
||||
|
||||
test('findMyEntry matches a hashed snapshot member and strips its internal key', () => {
|
||||
const key = memberKey('my-openid')
|
||||
const entry = findMyEntry([{ rank: 2, memberKey: key, duration: 90 }], key)
|
||||
|
||||
assert.deepEqual(entry, { rank: 2, duration: 90, isMe: true })
|
||||
})
|
||||
|
||||
test('cachedFileId reads a CloudBase doc object rather than an array', () => {
|
||||
assert.equal(
|
||||
cachedFileId({ fileID: 'cloud://env.tts-cache/start.mp3' }),
|
||||
'cloud://env.tts-cache/start.mp3'
|
||||
)
|
||||
})
|
||||
|
||||
test('publicRanked strips memberKey from every snapshot entry', () => {
|
||||
assert.deepEqual(
|
||||
publicRanked([{ rank: 1, memberKey: 'secret', name: '甲' }]),
|
||||
[{ rank: 1, name: '甲' }]
|
||||
)
|
||||
})
|
||||
|
||||
test('deleteAllPages removes every document across pages', async () => {
|
||||
const pages = [
|
||||
[{ _id: 'a' }, { _id: 'b' }],
|
||||
[{ _id: 'c' }],
|
||||
[]
|
||||
]
|
||||
const removed = []
|
||||
|
||||
await deleteAllPages(
|
||||
async () => pages.shift(),
|
||||
async (id) => { removed.push(id) }
|
||||
)
|
||||
|
||||
assert.deepEqual(removed, ['a', 'b', 'c'])
|
||||
})
|
||||
|
||||
test('deleteAllPages surfaces a failed deletion', async () => {
|
||||
await assert.rejects(
|
||||
deleteAllPages(
|
||||
async () => [{ _id: 'a' }],
|
||||
async () => { throw new Error('delete failed') }
|
||||
),
|
||||
/delete failed/
|
||||
)
|
||||
})
|
||||
Reference in New Issue
Block a user