Files
wx_pbzc/tests/cloud-data-correctness.test.js
2026-07-29 11:03:44 +08:00

58 lines
1.5 KiB
JavaScript

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/
)
})