datasourceRemoteTestTemplate function
Implementation
String datasourceRemoteTestTemplate(String name, String className) =>
'''
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:dio/dio.dart';
import '../../../../../lib/features/$name/data/datasources/${name}_remote_datasource_impl.dart';
import '../../../../../lib/features/$name/data/models/${name}_model.dart';
class MockDio extends Mock implements Dio {}
void main() {
late ${className}RemoteDataSourceImpl dataSource;
late MockDio mockDio;
setUpAll(() {
registerFallbackValue(RequestOptions(path: ''));
});
setUp(() {
mockDio = MockDio();
dataSource = ${className}RemoteDataSourceImpl(mockDio);
});
group('${className}RemoteDataSource', () {
test('should return ${className}Model when the call is successful', () async {
final tResponseData = {'id': '123'};
when(() => mockDio.get(any())).thenAnswer(
(_) async => Response(
data: tResponseData,
statusCode: 200,
requestOptions: RequestOptions(path: ''),
),
);
final result = await dataSource.fetchData();
expect(result, isA<${className}Model>());
expect(result.id, '123');
verify(() => mockDio.get('https://api.example.com/$name')).called(1);
});
test('should throw exception when the call fails', () async {
when(() => mockDio.get(any())).thenThrow(DioException(
requestOptions: RequestOptions(path: ''),
message: 'Network error',
));
expect(() => dataSource.fetchData(), throwsA(isA<DioException>()));
});
});
}
''';