mirror of
https://github.com/Unleash/unleash.git
synced 2025-01-06 00:07:44 +01:00
82a53fa9b3
Previously, clearing the SWR cache cleared all entries. Now you can configure the cache size. 1. This makes the search more fluid. Previously, if you went back and forth on pages, you were always sent to the loading state. 2. This also solves the issue where the command bar search cleared the cache for all other searches. 3. Additionally, it addresses the problem where the global search cleared the cache for project search.
54 lines
1.9 KiB
TypeScript
54 lines
1.9 KiB
TypeScript
import { clearCacheEntries } from './useClearSWRCache';
|
|
|
|
describe('manageCacheEntries', () => {
|
|
it('should clear old cache entries and keep the current one when SWR_CACHE_SIZE is not provided', () => {
|
|
const cacheMock = new Map();
|
|
cacheMock.set('prefix-1', {});
|
|
cacheMock.set('prefix-2', {});
|
|
cacheMock.set('prefix-3', {});
|
|
|
|
clearCacheEntries(cacheMock, 'prefix-3', 'prefix-');
|
|
|
|
expect(cacheMock.has('prefix-1')).toBe(false);
|
|
expect(cacheMock.has('prefix-2')).toBe(false);
|
|
expect(cacheMock.has('prefix-3')).toBe(true);
|
|
});
|
|
|
|
it('should keep the SWR_CACHE_SIZE entries and delete the rest', () => {
|
|
const cacheMock = new Map();
|
|
cacheMock.set('prefix-1', {});
|
|
cacheMock.set('prefix-2', {});
|
|
cacheMock.set('prefix-3', {});
|
|
cacheMock.set('prefix-4', {});
|
|
|
|
clearCacheEntries(cacheMock, 'prefix-4', 'prefix-', 2);
|
|
|
|
expect(cacheMock.has('prefix-4')).toBe(true);
|
|
expect([...cacheMock.keys()].length).toBe(2);
|
|
});
|
|
|
|
it('should handle case when SWR_CACHE_SIZE is larger than number of entries', () => {
|
|
const cacheMock = new Map();
|
|
cacheMock.set('prefix-1', {});
|
|
cacheMock.set('prefix-2', {});
|
|
|
|
clearCacheEntries(cacheMock, 'prefix-2', 'prefix-', 5);
|
|
|
|
expect(cacheMock.has('prefix-1')).toBe(true);
|
|
expect(cacheMock.has('prefix-2')).toBe(true);
|
|
});
|
|
|
|
it('should not delete entries that do not match the prefix', () => {
|
|
const cacheMock = new Map();
|
|
cacheMock.set('prefix-1', {});
|
|
cacheMock.set('other-2', {});
|
|
cacheMock.set('prefix-3', {});
|
|
|
|
clearCacheEntries(cacheMock, 'prefix-3', 'prefix-', 2);
|
|
|
|
expect(cacheMock.has('prefix-1')).toBe(true);
|
|
expect(cacheMock.has('other-2')).toBe(true);
|
|
expect(cacheMock.has('prefix-3')).toBe(true);
|
|
});
|
|
});
|