Files
flutter-clean-architecture-…/test/shared/mixins/exception_handler_mixin_test.dart
Utsav Ghimire 769527862b initial commit
2023-03-02 11:06:39 +05:45

90 lines
2.4 KiB
Dart

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter_project/shared/data/remote/remote.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
void main() {
late DioNetworkService mockDioNetworkServide;
setUpAll(() {
mockDioNetworkServide = DioNetworkService(MockDio());
});
group(
'ExceptionHandler Mixin Test\n',
() {
test(
'handle exception returns Response on success',
() async {
when(() => mockDioNetworkServide.dio.get(any())).thenAnswer(
(_) async => Response(
requestOptions: RequestOptions(path: ''),
),
);
final resp = await mockDioNetworkServide.get('');
expect(resp.isRight(), true);
},
);
test(
'handle exception returns AppException on error',
() async {
when(() => mockDioNetworkServide.dio.get(any())).thenThrow(
Exception(),
);
final resp = await mockDioNetworkServide.get('');
expect(resp.isLeft(), true);
},
);
test(
'handle exception handles SocketException with statusCode 0',
() async {
when(() => mockDioNetworkServide.dio.get(any())).thenThrow(
const SocketException(''),
);
final resp = (await mockDioNetworkServide.get(''));
resp.fold(
(l) {
expect(l.statusCode, 0);
},
(r) {},
);
},
);
test(
'handle exception handles DioError with statusCode 1',
() async {
when(() => mockDioNetworkServide.dio.get(any())).thenThrow(
DioError(requestOptions: RequestOptions(path: '')),
);
final resp = await mockDioNetworkServide.get('');
resp.fold(
(l) {
expect(l.statusCode, 1);
},
(r) {},
);
},
);
test(
'handle exception handles Other Exceptions with statusCode 2',
() async {
when(() => mockDioNetworkServide.dio.get(any())).thenThrow(
Exception(''),
);
final resp = await mockDioNetworkServide.get('');
resp.fold(
(l) {
expect(l.statusCode, 2);
},
(r) {},
);
},
);
},
);
}
class MockDio extends Mock implements Dio {}