mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-20 12:11:28 -07:00
- Hono HTTP server with 20+ REST endpoints for stats data - Stats overlay BrowserWindow with toggle keybinding - IPC channel definitions and preload bridge - Stats config section (toggleKey, serverPort, autoStartServer, autoOpenBrowser) - Config resolver for stats section - AnkiConnect proxy endpoints (guiBrowse, notesInfo) - Note ID passthrough in card mining callback chain - Stats CLI command with autoOpenBrowser respect
36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import { PollingRunner } from './polling';
|
|
|
|
test('polling runner records newly added cards after initialization', async () => {
|
|
const recordedCards: number[] = [];
|
|
let tracked = new Set<number>();
|
|
const responses = [[10, 11], [10, 11, 12, 13]];
|
|
const runner = new PollingRunner({
|
|
getDeck: () => 'Mining',
|
|
getPollingRate: () => 250,
|
|
findNotes: async () => responses.shift() ?? [],
|
|
shouldAutoUpdateNewCards: () => true,
|
|
processNewCard: async () => undefined,
|
|
recordCardsAdded: (count) => {
|
|
recordedCards.push(count);
|
|
},
|
|
isUpdateInProgress: () => false,
|
|
setUpdateInProgress: () => undefined,
|
|
getTrackedNoteIds: () => tracked,
|
|
setTrackedNoteIds: (noteIds) => {
|
|
tracked = noteIds;
|
|
},
|
|
showStatusNotification: () => undefined,
|
|
logDebug: () => undefined,
|
|
logInfo: () => undefined,
|
|
logWarn: () => undefined,
|
|
});
|
|
|
|
await runner.pollOnce();
|
|
await runner.pollOnce();
|
|
|
|
assert.deepEqual(recordedCards, [2]);
|
|
});
|