forked from eatvio/eatvio_app
feat(test): update oauth handling and improve preferences management
This commit is contained in:
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user