Add test for force initializing the cache dates

This commit is contained in:
Roland Geider
2023-12-27 13:40:43 +01:00
parent b64458603f
commit 35a9dc046f
2 changed files with 66 additions and 7 deletions

View File

@@ -391,7 +391,7 @@ class ExercisesProvider with ChangeNotifier {
}
}
Future<void> initCacheTimesLocalPrefs() async {
Future<void> initCacheTimesLocalPrefs({forceInit = false}) async {
final prefs = await SharedPreferences.getInstance();
// TODO: The exercise data was previously saved in PREFS_EXERCISES. This
@@ -404,16 +404,16 @@ class ExercisesProvider with ChangeNotifier {
final initDate = DateTime(2023, 1, 1).toIso8601String();
if (!prefs.containsKey(PREFS_LAST_UPDATED_MUSCLES)) {
if (forceInit || !prefs.containsKey(PREFS_LAST_UPDATED_MUSCLES)) {
await prefs.setString(PREFS_LAST_UPDATED_MUSCLES, initDate);
}
if (!prefs.containsKey(PREFS_LAST_UPDATED_EQUIPMENT)) {
if (forceInit || !prefs.containsKey(PREFS_LAST_UPDATED_EQUIPMENT)) {
await prefs.setString(PREFS_LAST_UPDATED_EQUIPMENT, initDate);
}
if (!prefs.containsKey(PREFS_LAST_UPDATED_LANGUAGES)) {
if (forceInit || !prefs.containsKey(PREFS_LAST_UPDATED_LANGUAGES)) {
await prefs.setString(PREFS_LAST_UPDATED_LANGUAGES, initDate);
}
if (!prefs.containsKey(PREFS_LAST_UPDATED_CATEGORIES)) {
if (forceInit || !prefs.containsKey(PREFS_LAST_UPDATED_CATEGORIES)) {
await prefs.setString(PREFS_LAST_UPDATED_CATEGORIES, initDate);
}
}
@@ -421,8 +421,7 @@ class ExercisesProvider with ChangeNotifier {
Future<void> clearAllCachesAndPrefs() async {
final database = locator<ExerciseDatabase>();
await database.deleteEverything();
await initCacheTimesLocalPrefs();
await initCacheTimesLocalPrefs(forceInit: true);
}
/// Loads all needed data for the exercises from the local cache, or if not available,

View File

@@ -4,6 +4,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:wger/exceptions/no_such_entry_exception.dart';
import 'package:wger/helpers/consts.dart';
import 'package:wger/models/exercises/category.dart';
import 'package:wger/models/exercises/equipment.dart';
import 'package:wger/models/exercises/muscle.dart';
@@ -83,6 +84,7 @@ void main() {
setUp(() {
mockBaseProvider = MockWgerBaseProvider();
provider = ExercisesProvider(mockBaseProvider);
SharedPreferences.setMockInitialValues({});
// Mock categories
when(mockBaseProvider.makeUrl(categoryUrl)).thenReturn(tCategoryEntriesUri);
@@ -368,4 +370,62 @@ void main() {
});
});
});
group('local prefs', () {
test('initCacheTimesLocalPrefs correctly initalises the cache values', () async {
// arrange
const initValue = '2023-01-01T00:00:00.000';
final prefs = await SharedPreferences.getInstance();
// act
await provider.initCacheTimesLocalPrefs();
// assert
expect(prefs.getString(PREFS_LAST_UPDATED_MUSCLES), initValue);
expect(prefs.getString(PREFS_LAST_UPDATED_EQUIPMENT), initValue);
expect(prefs.getString(PREFS_LAST_UPDATED_CATEGORIES), initValue);
expect(prefs.getString(PREFS_LAST_UPDATED_LANGUAGES), initValue);
});
test('calling initCacheTimesLocalPrefs again does nothing', () async {
// arrange
final prefs = await SharedPreferences.getInstance();
const newValue = '2023-10-10T01:18:35.000';
// act
await provider.initCacheTimesLocalPrefs();
prefs.setString(PREFS_LAST_UPDATED_MUSCLES, newValue);
prefs.setString(PREFS_LAST_UPDATED_EQUIPMENT, newValue);
prefs.setString(PREFS_LAST_UPDATED_CATEGORIES, newValue);
prefs.setString(PREFS_LAST_UPDATED_LANGUAGES, newValue);
await provider.initCacheTimesLocalPrefs();
// Assert
expect(prefs.getString(PREFS_LAST_UPDATED_MUSCLES), newValue);
expect(prefs.getString(PREFS_LAST_UPDATED_EQUIPMENT), newValue);
expect(prefs.getString(PREFS_LAST_UPDATED_CATEGORIES), newValue);
expect(prefs.getString(PREFS_LAST_UPDATED_LANGUAGES), newValue);
});
test('calling initCacheTimesLocalPrefs with forceInit replaces the date', () async {
// arrange
final prefs = await SharedPreferences.getInstance();
const initValue = '2023-01-01T00:00:00.000';
const newValue = '2023-10-10T01:18:35.000';
// act
await provider.initCacheTimesLocalPrefs();
prefs.setString(PREFS_LAST_UPDATED_MUSCLES, newValue);
prefs.setString(PREFS_LAST_UPDATED_EQUIPMENT, newValue);
prefs.setString(PREFS_LAST_UPDATED_CATEGORIES, newValue);
prefs.setString(PREFS_LAST_UPDATED_LANGUAGES, newValue);
await provider.initCacheTimesLocalPrefs(forceInit: true);
// Assert
expect(prefs.getString(PREFS_LAST_UPDATED_MUSCLES), initValue);
expect(prefs.getString(PREFS_LAST_UPDATED_EQUIPMENT), initValue);
expect(prefs.getString(PREFS_LAST_UPDATED_CATEGORIES), initValue);
expect(prefs.getString(PREFS_LAST_UPDATED_LANGUAGES), initValue);
});
});
}