mirror of
https://github.com/wger-project/flutter.git
synced 2026-02-18 00:17:48 +01:00
Add test for force initializing the cache dates
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user