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