Skip to content

Commit 6cd8334

Browse files
vinicius0026martijn00
authored andcommitted
expose memoryCacheContainsKey method from cache_store
1 parent 8027df2 commit 6cd8334

File tree

2 files changed

+44
-47
lines changed

2 files changed

+44
-47
lines changed

flutter_cache_manager/lib/src/cache_store.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,10 @@ class CacheStore {
188188
}
189189
}
190190

191+
bool memoryCacheContainsKey(String key) {
192+
return _memCache.containsKey(key);
193+
}
194+
191195
Future<void> dispose() async {
192196
final provider = await _cacheInfoRepository;
193197
await provider.close();

flutter_cache_manager/test/cache_store_test.dart

Lines changed: 40 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,23 @@ void main() {
110110
await store.getFile(fileUrl);
111111
expect(await store.getFileFromMemory(fileUrl), isNotNull);
112112
});
113+
114+
test(
115+
'Store.memoryCacheContainsKey should return true if the key is present in the memory cache',
116+
() async {
117+
var config = createTestConfig();
118+
var store = CacheStore(config);
119+
120+
var cacheObject = CacheObject(
121+
'baseflow.com/test.png',
122+
relativePath: 'testimage.png',
123+
validTill: clock.now().add(const Duration(days: 7)),
124+
);
125+
await store.putFile(cacheObject);
126+
127+
expect(store.memoryCacheContainsKey('baseflow.com/test.png'), true);
128+
expect(store.memoryCacheContainsKey('unseen-file'), false);
129+
});
113130
});
114131

115132
group('Storing files in store', () {
@@ -127,9 +144,7 @@ void main() {
127144
verify(config.repo.updateOrInsert(cacheObject)).called(1);
128145
});
129146

130-
test(
131-
'Store should store fileinfo in repo and id should be available afterwards',
132-
() async {
147+
test('Store should store fileinfo in repo and id should be available afterwards', () async {
133148
var config = createTestConfig();
134149

135150
var cacheObject = CacheObject(
@@ -174,8 +189,7 @@ void main() {
174189
);
175190
await store.removeCachedFile(cacheObject);
176191

177-
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id))))
178-
.called(1);
192+
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1);
179193
});
180194

181195
test('Store should remove file over capacity', () async {
@@ -191,20 +205,16 @@ void main() {
191205
);
192206
await config.returnsFile('testimage.png');
193207

194-
when(config.mockRepo.getObjectsOverCapacity(any))
195-
.thenAnswer((_) => Future.value([cacheObject]));
196-
when(config.mockRepo.getOldObjects(any))
197-
.thenAnswer((_) => Future.value([]));
198-
when(config.mockRepo.get('baseflow.com/test.png'))
199-
.thenAnswer((_) => Future.value(cacheObject));
208+
when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([cacheObject]));
209+
when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([]));
210+
when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject));
200211

201212
expect(await store.getFile('baseflow.com/test.png'), isNotNull);
202213

203214
await untilCalled(config.mockRepo.deleteAll(any));
204215

205216
verify(config.mockRepo.getObjectsOverCapacity(any)).called(1);
206-
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id))))
207-
.called(1);
217+
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1);
208218
});
209219

210220
test('Store should remove file over that are too old', () async {
@@ -220,20 +230,16 @@ void main() {
220230
validTill: clock.now().add(const Duration(days: 7)),
221231
);
222232

223-
when(config.mockRepo.getObjectsOverCapacity(any))
224-
.thenAnswer((_) => Future.value([]));
225-
when(config.mockRepo.getOldObjects(any))
226-
.thenAnswer((_) => Future.value([cacheObject]));
227-
when(config.mockRepo.get('baseflow.com/test.png'))
228-
.thenAnswer((_) => Future.value(cacheObject));
233+
when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([]));
234+
when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([cacheObject]));
235+
when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject));
229236

230237
expect(await store.getFile('baseflow.com/test.png'), isNotNull);
231238

232239
await untilCalled(config.mockRepo.deleteAll(any));
233240

234241
verify(config.mockRepo.getOldObjects(any)).called(1);
235-
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id))))
236-
.called(1);
242+
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1);
237243
});
238244

239245
test('Store should remove file old and over capacity', () async {
@@ -249,12 +255,9 @@ void main() {
249255
validTill: clock.now().add(const Duration(days: 7)),
250256
);
251257

252-
when(config.mockRepo.getObjectsOverCapacity(any))
253-
.thenAnswer((_) => Future.value([cacheObject]));
254-
when(config.mockRepo.getOldObjects(any))
255-
.thenAnswer((_) => Future.value([cacheObject]));
256-
when(config.mockRepo.get('baseflow.com/test.png'))
257-
.thenAnswer((_) => Future.value(cacheObject));
258+
when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([cacheObject]));
259+
when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([cacheObject]));
260+
when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject));
258261

259262
expect(await store.getFile('baseflow.com/test.png'), isNotNull);
260263

@@ -263,8 +266,7 @@ void main() {
263266

264267
verify(config.mockRepo.getObjectsOverCapacity(any)).called(1);
265268
verify(config.mockRepo.getOldObjects(any)).called(1);
266-
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id))))
267-
.called(1);
269+
verify(config.mockRepo.deleteAll(argThat(contains(cacheObject.id)))).called(1);
268270
});
269271

270272
test('Store should recheck cache info when file is removed', () async {
@@ -280,20 +282,16 @@ void main() {
280282
validTill: clock.now().add(const Duration(days: 7)),
281283
);
282284

283-
when(config.mockRepo.getObjectsOverCapacity(any))
284-
.thenAnswer((_) => Future.value([]));
285-
when(config.mockRepo.getOldObjects(any))
286-
.thenAnswer((_) => Future.value([]));
287-
when(config.mockRepo.get('baseflow.com/test.png'))
288-
.thenAnswer((_) => Future.value(cacheObject));
285+
when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([]));
286+
when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([]));
287+
when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject));
289288

290289
expect(await store.getFile('baseflow.com/test.png'), isNotNull);
291290
await file.delete();
292291
expect(await store.getFile('baseflow.com/test.png'), isNull);
293292
});
294293

295-
test('Store should not remove files that are not old or over capacity',
296-
() async {
294+
test('Store should not remove files that are not old or over capacity', () async {
297295
var config = createTestConfig();
298296
var store = CacheStore(config);
299297
store.cleanupRunMinInterval = const Duration(milliseconds: 1);
@@ -306,12 +304,9 @@ void main() {
306304
validTill: clock.now().add(const Duration(days: 7)),
307305
);
308306

309-
when(config.mockRepo.getObjectsOverCapacity(any))
310-
.thenAnswer((_) => Future.value([]));
311-
when(config.mockRepo.getOldObjects(any))
312-
.thenAnswer((_) => Future.value([]));
313-
when(config.mockRepo.get('baseflow.com/test.png'))
314-
.thenAnswer((_) => Future.value(cacheObject));
307+
when(config.mockRepo.getObjectsOverCapacity(any)).thenAnswer((_) => Future.value([]));
308+
when(config.mockRepo.getOldObjects(any)).thenAnswer((_) => Future.value([]));
309+
when(config.mockRepo.get('baseflow.com/test.png')).thenAnswer((_) => Future.value(cacheObject));
315310

316311
expect(await store.getFile('baseflow.com/test.png'), isNotNull);
317312

@@ -346,13 +341,11 @@ void main() {
346341
validTill: clock.now().add(const Duration(days: 7)),
347342
);
348343

349-
when(config.mockRepo.getAllObjects())
350-
.thenAnswer((_) => Future.value([co1, co2, co3]));
344+
when(config.mockRepo.getAllObjects()).thenAnswer((_) => Future.value([co1, co2, co3]));
351345

352346
await store.emptyCache();
353347

354-
verify(config.mockRepo
355-
.deleteAll(argThat(containsAll([co1.id, co2.id, co3.id])))).called(1);
348+
verify(config.mockRepo.deleteAll(argThat(containsAll([co1.id, co2.id, co3.id])))).called(1);
356349
});
357350
});
358351
}

0 commit comments

Comments
 (0)