From ca2de630b9b746555bfa262b1c7bf5c7cb95d3f0 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Wed, 12 Nov 2025 00:44:24 -0500 Subject: [PATCH] fix fetchMaybe tests --- .../test/unit/misc/QuantumKVCacheTests.ts | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/packages/backend/test/unit/misc/QuantumKVCacheTests.ts b/packages/backend/test/unit/misc/QuantumKVCacheTests.ts index 560e1491ef..e7864d6f4e 100644 --- a/packages/backend/test/unit/misc/QuantumKVCacheTests.ts +++ b/packages/backend/test/unit/misc/QuantumKVCacheTests.ts @@ -431,7 +431,7 @@ describe(QuantumKVCache, () => { describe('fetchMaybe', () => { it('should return value when found by fetcher', async () => { const cache = makeCache({ - fetcher: () => 'bar', + optionalFetcher: () => 'bar', }); const result = await cache.fetchMaybe('foo'); @@ -439,10 +439,21 @@ describe(QuantumKVCache, () => { expect(result).toBe('bar'); }); + it('should persist value when found by fetcher', async () => { + const cache = makeCache({ + optionalFetcher: () => 'bar', + }); + + await cache.fetchMaybe('foo'); + const result = cache.get('foo'); + + expect(result).toBe('bar'); + }); + it('should call onChanged when found by fetcher', async () => { const fakeOnChanged = jest.fn(() => Promise.resolve()); const cache = makeCache({ - fetcher: () => 'bar', + optionalFetcher: () => 'bar', onChanged: fakeOnChanged, }); @@ -453,7 +464,7 @@ describe(QuantumKVCache, () => { it('should return undefined when fetcher returns undefined', async () => { const cache = makeCache({ - fetcher: () => undefined, + optionalFetcher: () => undefined, }); const result = await cache.fetchMaybe('foo'); @@ -464,7 +475,7 @@ describe(QuantumKVCache, () => { it('should not call onChanged when fetcher returns undefined', async () => { const fakeOnChanged = jest.fn(() => Promise.resolve()); const cache = makeCache({ - fetcher: () => undefined, + optionalFetcher: () => undefined, onChanged: fakeOnChanged, }); @@ -475,7 +486,7 @@ describe(QuantumKVCache, () => { it('should return undefined when fetcher returns null', async () => { const cache = makeCache({ - fetcher: () => null, + optionalFetcher: () => null, }); const result = await cache.fetchMaybe('foo'); @@ -486,7 +497,7 @@ describe(QuantumKVCache, () => { it('should not call onChanged when fetcher returns null', async () => { const fakeOnChanged = jest.fn(() => Promise.resolve()); const cache = makeCache({ - fetcher: () => null, + optionalFetcher: () => null, onChanged: fakeOnChanged, }); @@ -497,7 +508,7 @@ describe(QuantumKVCache, () => { it('should throw FetchFailedError when fetcher throws error', async () => { const cache = makeCache({ - fetcher: () => { throw new Error('test error'); }, + optionalFetcher: () => { throw new Error('test error'); }, }); await assert.throwsAsync(FetchFailedError, async () => { @@ -505,6 +516,16 @@ describe(QuantumKVCache, () => { }); }); + it('should fall back on fetcher when optionalFetcher is not defined', async () => { + const cache = makeCache({ + fetcher: () => 'bar', + }); + + const result = await cache.fetchMaybe('foo'); + + expect(result).toBe('bar'); + }); + it('should respect optionalFetcherConcurrency', async () => { await testConcurrency( {