From 6cd8334ada548be283fd6a37923fa875601b44cd Mon Sep 17 00:00:00 2001 From: Vinicius Teixeira Date: Fri, 10 Dec 2021 15:47:39 -0300 Subject: [PATCH 1/2] expose memoryCacheContainsKey method from cache_store --- .../lib/src/cache_store.dart | 4 + .../test/cache_store_test.dart | 87 +++++++++---------- 2 files changed, 44 insertions(+), 47 deletions(-) diff --git a/flutter_cache_manager/lib/src/cache_store.dart b/flutter_cache_manager/lib/src/cache_store.dart index 395e3eaf..2d755853 100644 --- a/flutter_cache_manager/lib/src/cache_store.dart +++ b/flutter_cache_manager/lib/src/cache_store.dart @@ -188,6 +188,10 @@ class CacheStore { } } + bool memoryCacheContainsKey(String key) { + return _memCache.containsKey(key); + } + Future dispose() async { final provider = await _cacheInfoRepository; await provider.close(); diff --git a/flutter_cache_manager/test/cache_store_test.dart b/flutter_cache_manager/test/cache_store_test.dart index 93a8bd7b..dddb06db 100644 --- a/flutter_cache_manager/test/cache_store_test.dart +++ b/flutter_cache_manager/test/cache_store_test.dart @@ -110,6 +110,23 @@ void main() { await store.getFile(fileUrl); expect(await store.getFileFromMemory(fileUrl), isNotNull); }); + + test( + 'Store.memoryCacheContainsKey should return true if the key is present in the memory cache', + () async { + var config = createTestConfig(); + var store = CacheStore(config); + + var cacheObject = CacheObject( + 'baseflow.com/test.png', + relativePath: 'testimage.png', + validTill: clock.now().add(const Duration(days: 7)), + ); + await store.putFile(cacheObject); + + expect(store.memoryCacheContainsKey('baseflow.com/test.png'), true); + expect(store.memoryCacheContainsKey('unseen-file'), false); + }); }); group('Storing files in store', () { @@ -127,9 +144,7 @@ void main() { verify(config.repo.updateOrInsert(cacheObject)).called(1); }); - test( - 'Store should store fileinfo in repo and id should be available afterwards', - () async { + test('Store should store fileinfo in repo and id should be available afterwards', () async { var config = createTestConfig(); var cacheObject = CacheObject( @@ -174,8 +189,7 @@ void main() { ); await store.removeCachedFile(cacheObject); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) - .called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); }); test('Store should remove file over capacity', () async { @@ -191,20 +205,16 @@ void main() { ); await config.returnsFile('testimage.png'); - when(config.mockRepo.getObjectsOverCapacity(any)) - .thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.getOldObjects(any)) - .thenAnswer((_) => Future.value([])); - when(config.mockRepo.get('baseflow.com/test.png')) - .thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([])); + when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); await untilCalled(config.mockRepo.deleteAll(any)); verify(config.mockRepo.getObjectsOverCapacity(any)).called(1); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) - .called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); }); test('Store should remove file over that are too old', () async { @@ -220,20 +230,16 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)) - .thenAnswer((_) => Future.value([])); - when(config.mockRepo.getOldObjects(any)) - .thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.get('baseflow.com/test.png')) - .thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([])); + when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); await untilCalled(config.mockRepo.deleteAll(any)); verify(config.mockRepo.getOldObjects(any)).called(1); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) - .called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); }); test('Store should remove file old and over capacity', () async { @@ -249,12 +255,9 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)) - .thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.getOldObjects(any)) - .thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.get('baseflow.com/test.png')) - .thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); @@ -263,8 +266,7 @@ void main() { verify(config.mockRepo.getObjectsOverCapacity(any)).called(1); verify(config.mockRepo.getOldObjects(any)).called(1); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) - .called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); }); test('Store should recheck cache info when file is removed', () async { @@ -280,20 +282,16 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)) - .thenAnswer((_) => Future.value([])); - when(config.mockRepo.getOldObjects(any)) - .thenAnswer((_) => Future.value([])); - when(config.mockRepo.get('baseflow.com/test.png')) - .thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([])); + when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([])); + when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); await file.delete(); expect(await store.getFile('baseflow.com/test.png'), isNull); }); - test('Store should not remove files that are not old or over capacity', - () async { + test('Store should not remove files that are not old or over capacity', () async { var config = createTestConfig(); var store = CacheStore(config); store.cleanupRunMinInterval = const Duration(milliseconds: 1); @@ -306,12 +304,9 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)) - .thenAnswer((_) => Future.value([])); - when(config.mockRepo.getOldObjects(any)) - .thenAnswer((_) => Future.value([])); - when(config.mockRepo.get('baseflow.com/test.png')) - .thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([])); + when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([])); + when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); @@ -346,13 +341,11 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getAllObjects()) - .thenAnswer((_) => Future.value([co1, co2, co3])); + when(config.mockRepo.getAllObjects()).thenAnswer((_) => Future.value([co1, co2, co3])); await store.emptyCache(); - verify(config.mockRepo - .deleteAll(argThat(containsAll([co1.id, co2.id, co3.id])))).called(1); + verify(config.mockRepo.deleteAll(argThat(containsAll([co1.id, co2.id, co3.id])))).called(1); }); }); } From 9dd7c8c7527c3d29eea28715b437c941219160fb Mon Sep 17 00:00:00 2001 From: Martijn van Dijk Date: Wed, 31 Jul 2024 21:29:45 +0200 Subject: [PATCH 2/2] Format --- .../test/cache_store_test.dart | 70 +++++++++++++------ 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/flutter_cache_manager/test/cache_store_test.dart b/flutter_cache_manager/test/cache_store_test.dart index dddb06db..b440164c 100644 --- a/flutter_cache_manager/test/cache_store_test.dart +++ b/flutter_cache_manager/test/cache_store_test.dart @@ -144,7 +144,9 @@ void main() { verify(config.repo.updateOrInsert(cacheObject)).called(1); }); - test('Store should store fileinfo in repo and id should be available afterwards', () async { + test( + 'Store should store fileinfo in repo and id should be available afterwards', + () async { var config = createTestConfig(); var cacheObject = CacheObject( @@ -189,7 +191,8 @@ void main() { ); await store.removeCachedFile(cacheObject); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) + .called(1); }); test('Store should remove file over capacity', () async { @@ -205,16 +208,20 @@ void main() { ); await config.returnsFile('testimage.png'); - when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([])); - when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)) + .thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.getOldObjects(any)) + .thenAnswer((_) => Future.value([])); + when(config.mockRepo.get('baseflow.com/test.png')) + .thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); await untilCalled(config.mockRepo.deleteAll(any)); verify(config.mockRepo.getObjectsOverCapacity(any)).called(1); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) + .called(1); }); test('Store should remove file over that are too old', () async { @@ -230,16 +237,20 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([])); - when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)) + .thenAnswer((_) => Future.value([])); + when(config.mockRepo.getOldObjects(any)) + .thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.get('baseflow.com/test.png')) + .thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); await untilCalled(config.mockRepo.deleteAll(any)); verify(config.mockRepo.getOldObjects(any)).called(1); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) + .called(1); }); test('Store should remove file old and over capacity', () async { @@ -255,9 +266,12 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([cacheObject])); - when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)) + .thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.getOldObjects(any)) + .thenAnswer((_) => Future.value([cacheObject])); + when(config.mockRepo.get('baseflow.com/test.png')) + .thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); @@ -266,7 +280,8 @@ void main() { verify(config.mockRepo.getObjectsOverCapacity(any)).called(1); verify(config.mockRepo.getOldObjects(any)).called(1); - verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1); + verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))) + .called(1); }); test('Store should recheck cache info when file is removed', () async { @@ -282,16 +297,20 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([])); - when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([])); - when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)) + .thenAnswer((_) => Future.value([])); + when(config.mockRepo.getOldObjects(any)) + .thenAnswer((_) => Future.value([])); + when(config.mockRepo.get('baseflow.com/test.png')) + .thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); await file.delete(); expect(await store.getFile('baseflow.com/test.png'), isNull); }); - test('Store should not remove files that are not old or over capacity', () async { + test('Store should not remove files that are not old or over capacity', + () async { var config = createTestConfig(); var store = CacheStore(config); store.cleanupRunMinInterval = const Duration(milliseconds: 1); @@ -304,9 +323,12 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([])); - when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([])); - when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject)); + when(config.mockRepo.getObjectsOverCapacity(any)) + .thenAnswer((_) => Future.value([])); + when(config.mockRepo.getOldObjects(any)) + .thenAnswer((_) => Future.value([])); + when(config.mockRepo.get('baseflow.com/test.png')) + .thenAnswer((_) => Future.value(cacheObject)); expect(await store.getFile('baseflow.com/test.png'), isNotNull); @@ -341,11 +363,13 @@ void main() { validTill: clock.now().add(const Duration(days: 7)), ); - when(config.mockRepo.getAllObjects()).thenAnswer((_) => Future.value([co1, co2, co3])); + when(config.mockRepo.getAllObjects()) + .thenAnswer((_) => Future.value([co1, co2, co3])); await store.emptyCache(); - verify(config.mockRepo.deleteAll(argThat(containsAll([co1.id, co2.id, co3.id])))).called(1); + verify(config.mockRepo + .deleteAll(argThat(containsAll([co1.id, co2.id, co3.id])))).called(1); }); }); }