feat(test): update oauth handling and improve preferences management

This commit is contained in:
mso7nueh
2025-12-01 23:51:40 +03:00
parent 9fcfac87d4
commit 965ae2f02b
11 changed files with 902 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
import 'package:eatvio_app/core/internet_connection_cubit/internet_connection_cubit.dart';
import 'package:eatvio_app/core/internet_connection_cubit/internet_connection_state.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('InternetConnectionCubit', () {
late InternetConnectionCubit cubit;
const MethodChannel connectivityChannel = MethodChannel('dev.fluttercommunity.plus/connectivity');
setUp(() {
// Мокируем MethodChannel для connectivity
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(
connectivityChannel,
(MethodCall methodCall) async {
if (methodCall.method == 'check') {
return ['wifi']; // ConnectivityResult.wifi как строка
}
if (methodCall.method == 'onConnectivityChanged') {
return null;
}
return null;
},
);
});
tearDown(() async {
// Очищаем моки
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(
connectivityChannel,
null,
);
if (!cubit.isClosed) {
await cubit.close();
}
});
test('начальное состояние - isInternetAvailable = true', () {
cubit = InternetConnectionCubit();
expect(cubit.state.isInternetAvailable, isTrue);
});
test('checkConnection - успешная проверка с интернетом', () async {
cubit = InternetConnectionCubit();
// Ждем немного, чтобы cubit инициализировался
await Future.delayed(const Duration(milliseconds: 100));
// Проверяем, что метод checkConnection не выбрасывает исключений
await cubit.checkConnection();
// Состояние должно быть определено (true или false в зависимости от реального состояния)
expect(cubit.state, isA<InternetConnectionState>());
});
test('checkConnection - обработка PlatformException', () async {
// Этот тест сложно выполнить без реального мока Connectivity,
// так как Connectivity создается внутри cubit
// Оставим базовую проверку, что метод не падает
cubit = InternetConnectionCubit();
await Future.delayed(const Duration(milliseconds: 100));
// Просто проверяем, что метод выполняется без ошибок
await cubit.checkConnection();
expect(cubit.state, isA<InternetConnectionState>());
});
test('close - корректно закрывает cubit и освобождает ресурсы', () async {
cubit = InternetConnectionCubit();
await Future.delayed(const Duration(milliseconds: 100));
await cubit.close();
expect(cubit.isClosed, isTrue);
});
});
}