feat: run full refresh with EPG rematching

Run full live catalog refreshes through live source sync, complete channel analysis, EPG source refresh, and persisted EPG rematching while keeping check-new incremental.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
blomios
2026-10-08 00:05:00 +02:00
parent b81bc10d49
commit b3dbb3cfba
14 changed files with 404 additions and 39 deletions

View File

@ -57,6 +57,29 @@ test('presents writing as an indeterminate finalization phase', () => {
assert.equal(view.progressText, 'Finalizing…');
});
test('presents full refresh and EPG matching phases with user-facing labels', () => {
assert.equal(
present({ status: 'building', phase: 'refreshing_live_sources' }).statusLabel,
'Refreshing IPTV sources…'
);
assert.equal(
present({ status: 'building', phase: 'refreshing_epg_sources' }).statusLabel,
'Refreshing EPG data…'
);
assert.equal(
present({ status: 'building', phase: 'matching_epg', processed: 4, total: 10 }).statusLabel,
'Matching channels to EPG data…'
);
assert.equal(
present({ status: 'building', phase: 'laya_epg_matching', processed: 4, total: 10 }).statusLabel,
'Matching channels to EPG data…'
);
const finalizing = present({ status: 'building', phase: 'writing_epg_matches', processed: 10, total: 10 });
assert.equal(finalizing.statusLabel, 'Finalizing…');
assert.equal(finalizing.progressIndeterminate, true);
assert.equal(finalizing.progressText, 'Finalizing…');
});
test('presents success and retry states', () => {
assert.deepEqual(
{ label: present({ status: 'success', projectedCount: 12 }).statusLabel, button: present({ status: 'success' }).buttonLabel },