fakeData method

Timer fakeData({
  1. FakeDataType fakeDataType = FakeDataType.response,
  2. Response? fakeResponse,
  3. DioError? fakeError,
  4. Duration duration = const Duration(seconds: 1),
  5. Duration responseTime = const Duration(seconds: 1),
  6. int? numberOfRepetions,
})

Implementation

Timer fakeData({
  FakeDataType fakeDataType = FakeDataType.response,
  Response? fakeResponse,
  DioError? fakeError,
  Duration duration = const Duration(seconds: 1),
  Duration responseTime = const Duration(seconds: 1),
  int? numberOfRepetions,
}) {
  var currentNumberOfRepetions = 0;
  final timer = Timer.periodic(duration, (timer) {
    if (numberOfRepetions != null) {
      currentNumberOfRepetions += 1;
    }

    final requestOptions = RequestOptions(
      path: 'fakePath/fakePath/$currentNumberOfRepetions',
      method: 'POST',
      baseUrl: 'fake.com/endpoint',
      data: {'key': 'value'},
    );
    _onRequest(requestOptions);
    Future.delayed(responseTime).then((value) {
      switch (fakeDataType) {
        case FakeDataType.response:
          _onReponse(
            fakeResponse ??
                Response(
                  requestOptions: requestOptions,
                  statusCode: 200,
                  statusMessage: 'Success',
                  data: {'key': 'value'},
                ),
          );
          break;
        case FakeDataType.error:
          _onError(fakeError ??
              DioError(
                response: Response(
                  requestOptions: requestOptions,
                  statusCode: 400,
                  statusMessage: 'Bad Request',
                  data: {'key': 'value'},
                ),
                requestOptions: requestOptions,
              ));
          break;
        case FakeDataType.randomResponse:
          final isResponse = Random().nextBool();
          if (isResponse) {
            _onReponse(
              fakeResponse ??
                  Response(
                    requestOptions: requestOptions,
                    statusCode: 200,
                    statusMessage: 'Success',
                    data: {'key': 'value'},
                  ),
            );
          } else {
            _onError(fakeError ??
                DioError(
                  response: Response(
                    requestOptions: requestOptions,
                    statusCode: 400,
                    statusMessage: 'Bad Request',
                    data: {'key': 'value'},
                  ),
                  requestOptions: requestOptions,
                ));
          }

          break;
        case FakeDataType.onlyRequest:
          break;
      }
    });
    if (currentNumberOfRepetions == numberOfRepetions) {
      timer.cancel();
    }
  });
  return timer;
}