makeTrayTestingRequest<ModelType> function

  1. @GenerateMocks([Dio])
Future<TrayRequestResponse<ModelType>> makeTrayTestingRequest<ModelType>(
  1. TrayRequest request,
  2. TrayRequestMock mock, {
  3. FetchTrayDebugLevel? requestDebugLevel = FetchTrayDebugLevel.none,
})

provides a mocked version of the makeTrayRequest method this allows us to easily test every request, without using mockito everywhere

Implementation

// @GenerateMocks([Test])
@GenerateMocks([Dio])
Future<TrayRequestResponse<ModelType>> makeTrayTestingRequest<ModelType>(
  TrayRequest request,
  TrayRequestMock mock, {
  FetchTrayDebugLevel? requestDebugLevel = FetchTrayDebugLevel.none,
}) async {
  // create the mock client
  final mockClient = MockDio();

  // await the values
  final url = Uri.parse(await request.getUrlWithParams());
  // final headers = await request.getHeaders();
  final body = await request.getBody();

  // mock request response
  when(mockClient.request(
    url.toString(),
    data: body,
    options: anyNamed('options'),
  )).thenAnswer(
    (_) async {
      return Response(
        requestOptions: RequestOptions(
          path: request.url,
        ),
        data: mock.result,
        statusCode: mock.statusCode,
        /*  headers: {
        HttpHeaders.contentTypeHeader: 'application/json; charset=utf-8'
      }, */
      );
    },
  );

  // make request
  return makeTrayRequest(
    request,
    client: mockClient,
    requestDebugLevel: requestDebugLevel,
  );
}