Files
kuekhaoyang 3771b63332 feat: add self-contained strict verification chain
Keep every post-59948b5 change inside verification/. The verifier owns its npm working directory and sanitized Docker context, so no release metadata or root Docker configuration is modified.
2026-08-02 06:11:13 +08:00

44 lines
1.2 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
keepRenderableFavorites,
keepRenderableHistory,
} from '../../../lib/utils/sync-records';
// GH-ISSUE: 66,115,149,226,228; GH-PR: 90,227,229,231
const validIdentity = {
videoId: 'video-1',
source: 'source-a',
title: 'Example',
};
test('sync record filters reject malformed identities', () => {
assert.deepEqual(keepRenderableFavorites([
validIdentity,
{ ...validIdentity, videoId: undefined },
{ ...validIdentity, videoId: Number.NaN },
{ ...validIdentity, source: '' },
{ ...validIdentity, title: ' ' },
null,
]), [validIdentity]);
});
test('history records require a usable episode index', () => {
const validHistory = { ...validIdentity, episodeIndex: 0 };
assert.deepEqual(keepRenderableHistory([
validHistory,
{ ...validIdentity },
{ ...validIdentity, episodeIndex: -1 },
{ ...validIdentity, episodeIndex: 1.5 },
{ ...validIdentity, episodeIndex: '0' },
]), [validHistory]);
});
test('sync record filters tolerate non-array payloads', () => {
assert.deepEqual(keepRenderableHistory({ history: [] }), []);
assert.deepEqual(keepRenderableFavorites(undefined), []);
});