repoServiceTestHttpUtil<T extends RepoServiceBase, DataType> function
Future<void>
repoServiceTestHttpUtil<T extends RepoServiceBase, DataType>(
- T repoService(), {
- void setUp(
- HttpClientMock clientMock
- required Future<
Either< act(Failure, DataType> >- T
- required dynamic verify(
- HttpClientMock clientMock,
- Either<
Failure, DataType> response
- required String responseStubValue,
- int? statusCodeStubValue,
- Map<
String, String> headersStubValue = const {HttpHeaders.contentTypeHeader : 'application/json; charset=utf-8'},
Creates a new RepoServiceBase-specific test case with the given repoService
.
Implementation
Future<void> repoServiceTestHttpUtil<T extends RepoServiceBase, DataType>(
T Function() repoService, {
void Function(HttpClientMock clientMock)? setUp,
required Future<Either<Failure, DataType>> Function(T) act,
required Function(HttpClientMock clientMock, Either<Failure, DataType> response) verify,
required String responseStubValue,
int? statusCodeStubValue,
Map<String, String> headersStubValue = const {
HttpHeaders.contentTypeHeader: 'application/json; charset=utf-8',
},
}) async {
/// register http client mock, if not done already
if (!GetIt.instance.isRegistered<IHttpClient>()) {
GetIt.instance.registerSingleton<IHttpClient>(HttpClientMock());
}
T repoServiceBase = repoService();
if (repoServiceBase.client is! HttpClientMock) {
throw InvalidHttpClientMock();
}
HttpClientMock mockClient = repoServiceBase.client as HttpClientMock;
_cleanAndResetClientMock(mockClient);
_setStubbingOnHttpClient(
mockClient,
responseStubValue: responseStubValue,
headersStubValue: headersStubValue,
statusCodeStubValue: statusCodeStubValue,
);
setUp?.call(mockClient);
final response = await act(repoServiceBase);
verify(mockClient, response);
// _cleanAndResetClientMock(mockClient);
}