58 lines
1.5 KiB
JavaScript
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/
|
|
)
|
|
})
|