import 'package:eatvio_app/core/prefs.dart'; import 'package:eatvio_app/core/prefs_keys.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'prefs_test.mocks.dart'; @GenerateMocks([SharedPreferences]) void main() { group('Prefs', () { late MockSharedPreferences mockSharedPreferences; late Prefs prefs; setUp(() { mockSharedPreferences = MockSharedPreferences(); prefs = Prefs(mockSharedPreferences); }); test('setString stores string value', () async { when(mockSharedPreferences.setString('hasAnonymousTokenBeenSent', 'value')) .thenAnswer((_) async => true); await prefs.setString(PrefsKeys.hasAnonymousTokenBeenSent, 'value'); verify(mockSharedPreferences.setString('hasAnonymousTokenBeenSent', 'value')).called(1); }); test('getString retrieves string value', () { when(mockSharedPreferences.getString('hasAnonymousTokenBeenSent')) .thenReturn('value'); final result = prefs.getString(PrefsKeys.hasAnonymousTokenBeenSent); expect(result, 'value'); verify(mockSharedPreferences.getString('hasAnonymousTokenBeenSent')).called(1); }); test('getString returns null when key does not exist', () { when(mockSharedPreferences.getString('hasAnonymousTokenBeenSent')) .thenReturn(null); final result = prefs.getString(PrefsKeys.hasAnonymousTokenBeenSent); expect(result, null); }); test('setInt stores int value', () async { when(mockSharedPreferences.setInt('registrationDate', 12345)) .thenAnswer((_) async => true); await prefs.setInt(PrefsKeys.registrationDate, 12345); verify(mockSharedPreferences.setInt('registrationDate', 12345)).called(1); }); test('getInt retrieves int value', () { when(mockSharedPreferences.getInt('registrationDate')) .thenReturn(12345); final result = prefs.getInt(PrefsKeys.registrationDate); expect(result, 12345); verify(mockSharedPreferences.getInt('registrationDate')).called(1); }); test('getInt returns null when key does not exist', () { when(mockSharedPreferences.getInt('registrationDate')) .thenReturn(null); final result = prefs.getInt(PrefsKeys.registrationDate); expect(result, null); }); test('setBool stores bool value', () async { when(mockSharedPreferences.setBool('welcomeScreenWasShowed', true)) .thenAnswer((_) async => true); await prefs.setBool(PrefsKeys.welcomeScreenWasShowed, true); verify(mockSharedPreferences.setBool('welcomeScreenWasShowed', true)).called(1); }); test('getBool retrieves bool value', () { when(mockSharedPreferences.getBool('welcomeScreenWasShowed')) .thenReturn(true); final result = prefs.getBool(PrefsKeys.welcomeScreenWasShowed); expect(result, true); verify(mockSharedPreferences.getBool('welcomeScreenWasShowed')).called(1); }); test('getBool returns null when key does not exist', () { when(mockSharedPreferences.getBool('welcomeScreenWasShowed')) .thenReturn(null); final result = prefs.getBool(PrefsKeys.welcomeScreenWasShowed); expect(result, null); }); test('remove deletes key', () async { when(mockSharedPreferences.remove('hasAnonymousTokenBeenSent')) .thenAnswer((_) async => true); await prefs.remove(PrefsKeys.hasAnonymousTokenBeenSent); verify(mockSharedPreferences.remove('hasAnonymousTokenBeenSent')).called(1); }); test('clear removes all keys', () async { when(mockSharedPreferences.clear()) .thenAnswer((_) async => true); await prefs.clear(); verify(mockSharedPreferences.clear()).called(1); }); }); }