From 9e7a18496d68331d2efe6871892eb5c70d32619d Mon Sep 17 00:00:00 2001 From: 4gray Date: Sat, 4 Jul 2026 17:42:33 +0200 Subject: [PATCH] =?UTF-8?q?fix(tmdb):=20address=20follow-up=20review=20?= =?UTF-8?q?=E2=80=94=20drop=20TestBed=20from=20cache=20spec,=20hide=20sub-?= =?UTF-8?q?services,=20if-eviction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - tmdb-cache.service.spec.ts instantiates TmdbCacheService directly: the services Jest target has no @angular/core/testing, which failed CI typechecks (Codex P1); the service has no DI dependencies anyway. - TmdbPersonService/TmdbRuntimeService/TmdbSeasonService are no longer re-exported from the public barrel — they are implementation details of the TmdbEnrichmentService facade (greptile P2). - LRU eviction uses an explicit `if`: delete-then-reinsert means the map can only ever be one entry over the cap (greptile P2). Co-Authored-By: Claude Fable 5 --- libs/services/src/lib/tmdb/index.ts | 3 --- libs/services/src/lib/tmdb/tmdb-cache.service.spec.ts | 6 +++--- libs/services/src/lib/tmdb/tmdb-cache.service.ts | 8 ++++---- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/libs/services/src/lib/tmdb/index.ts b/libs/services/src/lib/tmdb/index.ts index c88543204..cd28e0596 100644 --- a/libs/services/src/lib/tmdb/index.ts +++ b/libs/services/src/lib/tmdb/index.ts @@ -6,7 +6,4 @@ export * from './tmdb-episode-merge'; export * from './tmdb-matcher'; export * from './tmdb-merge'; export * from './tmdb-person'; -export * from './tmdb-person.service'; -export * from './tmdb-runtime.service'; -export * from './tmdb-season.service'; export * from './tmdb.types'; diff --git a/libs/services/src/lib/tmdb/tmdb-cache.service.spec.ts b/libs/services/src/lib/tmdb/tmdb-cache.service.spec.ts index be67ffc86..d7a4e40bd 100644 --- a/libs/services/src/lib/tmdb/tmdb-cache.service.spec.ts +++ b/libs/services/src/lib/tmdb/tmdb-cache.service.spec.ts @@ -1,4 +1,3 @@ -import { TestBed } from '@angular/core/testing'; import { TmdbCacheEntry } from '@iptvnator/shared/interfaces'; import { TmdbCacheService } from './tmdb-cache.service'; @@ -15,8 +14,9 @@ describe('TmdbCacheService (in-memory LRU)', () => { }); beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(TmdbCacheService); + // No Angular DI dependencies — instantiate directly (the services + // Jest target has no @angular/core/testing available) + service = new TmdbCacheService(); }); it('stores and returns entries with a fetchedAt stamp', async () => { diff --git a/libs/services/src/lib/tmdb/tmdb-cache.service.ts b/libs/services/src/lib/tmdb/tmdb-cache.service.ts index d327f9ecb..b2bb18d33 100644 --- a/libs/services/src/lib/tmdb/tmdb-cache.service.ts +++ b/libs/services/src/lib/tmdb/tmdb-cache.service.ts @@ -81,12 +81,12 @@ export class TmdbCacheService { ); this.memoryCache.delete(key); this.memoryCache.set(key, stamped); - while (this.memoryCache.size > MEMORY_CACHE_MAX_ENTRIES) { + // delete-then-reinsert above means at most one entry over the cap + if (this.memoryCache.size > MEMORY_CACHE_MAX_ENTRIES) { const oldest = this.memoryCache.keys().next().value; - if (oldest === undefined) { - break; + if (oldest !== undefined) { + this.memoryCache.delete(oldest); } - this.memoryCache.delete(oldest); } }