chore(version): update app version to 1.3.5+85 and improve test coverage reporting in CI

This commit is contained in:
mso7nueh
2025-12-08 11:19:08 +03:00
parent abe4985f0e
commit c2a506cdbf
148 changed files with 12395 additions and 1889 deletions

View File

@@ -1,85 +1,123 @@
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;
late SharedPreferences sharedPreferences;
setUp(() async {
SharedPreferences.setMockInitialValues({});
sharedPreferences = await SharedPreferences.getInstance();
prefs = Prefs(sharedPreferences);
setUp(() {
mockSharedPreferences = MockSharedPreferences();
prefs = Prefs(mockSharedPreferences);
});
test('setString и getString - сохранение и получение строки', () async {
await prefs.setString(PrefsKeys.registrationDate, '2024-01-01');
test('setString stores string value', () async {
when(mockSharedPreferences.setString('hasAnonymousTokenBeenSent', 'value'))
.thenAnswer((_) async => true);
final value = prefs.getString(PrefsKeys.registrationDate);
expect(value, '2024-01-01');
await prefs.setString(PrefsKeys.hasAnonymousTokenBeenSent, 'value');
verify(mockSharedPreferences.setString('hasAnonymousTokenBeenSent', 'value')).called(1);
});
test('getString - возвращает null если значение не установлено', () {
final value = prefs.getString(PrefsKeys.registrationDate);
expect(value, isNull);
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('setInt и getInt - сохранение и получение числа', () async {
// Используем registrationDate как строку, но можно протестировать setInt с любым ключом
// Для теста используем setString, так как в PrefsKeys нет числовых ключей
await prefs.setString(PrefsKeys.registrationDate, '42');
test('getString returns null when key does not exist', () {
when(mockSharedPreferences.getString('hasAnonymousTokenBeenSent'))
.thenReturn(null);
final value = prefs.getString(PrefsKeys.registrationDate);
expect(value, '42');
final result = prefs.getString(PrefsKeys.hasAnonymousTokenBeenSent);
expect(result, null);
});
test('getInt - возвращает null если значение не установлено', () {
// Тестируем getInt с любым ключом
final value = prefs.getInt(PrefsKeys.registrationDate);
expect(value, isNull);
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('setBool и getBool - сохранение и получение булева значения', () async {
await prefs.setBool(PrefsKeys.hasAnonymousTokenBeenSent, true);
test('getInt retrieves int value', () {
when(mockSharedPreferences.getInt('registrationDate'))
.thenReturn(12345);
final value = prefs.getBool(PrefsKeys.hasAnonymousTokenBeenSent);
expect(value, isTrue);
final result = prefs.getInt(PrefsKeys.registrationDate);
expect(result, 12345);
verify(mockSharedPreferences.getInt('registrationDate')).called(1);
});
test('getBool - возвращает null если значение не установлено', () {
final value = prefs.getBool(PrefsKeys.hasAnonymousTokenBeenSent);
expect(value, isNull);
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('remove - удаление значения', () async {
await prefs.setString(PrefsKeys.registrationDate, 'test_value');
await prefs.remove(PrefsKeys.registrationDate);
test('setBool stores bool value', () async {
when(mockSharedPreferences.setBool('welcomeScreenWasShowed', true))
.thenAnswer((_) async => true);
final value = prefs.getString(PrefsKeys.registrationDate);
expect(value, isNull);
await prefs.setBool(PrefsKeys.welcomeScreenWasShowed, true);
verify(mockSharedPreferences.setBool('welcomeScreenWasShowed', true)).called(1);
});
test('clear - очистка всех значений', () async {
await prefs.setString(PrefsKeys.registrationDate, 'test_value');
await prefs.setBool(PrefsKeys.hasAnonymousTokenBeenSent, true);
await prefs.setBool(PrefsKeys.welcomeScreenWasShowed, false);
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();
expect(prefs.getString(PrefsKeys.registrationDate), isNull);
expect(prefs.getBool(PrefsKeys.hasAnonymousTokenBeenSent), isNull);
expect(prefs.getBool(PrefsKeys.welcomeScreenWasShowed), isNull);
});
test('перезапись значения', () async {
await prefs.setString(PrefsKeys.registrationDate, 'old_value');
await prefs.setString(PrefsKeys.registrationDate, 'new_value');
final value = prefs.getString(PrefsKeys.registrationDate);
expect(value, 'new_value');
verify(mockSharedPreferences.clear()).called(1);
});
});
}