http_interceptor icon indicating copy to clipboard operation
http_interceptor copied to clipboard

chore: fix bugs and add more tests

Open techouse opened this issue 7 months ago • 1 comments

This pull request introduces significant updates to the copyWith methods for BaseRequest, StreamedRequest, and related classes, transitioning them to asynchronous operations. It also adds comprehensive test coverage for these changes, ensuring correctness and robustness. Below are the key changes grouped by theme:

Enhancements to copyWith Methods:

  • The copyWith method in BaseRequest was updated to be asynchronous (Future<BaseRequest>), enabling support for asynchronous operations like handling streams. (lib/extensions/base_request.dart, [1] [2] [3]
  • Similarly, the StreamedRequest.copyWith method was updated to be asynchronous and now uses await to handle streams properly. (lib/extensions/streamed_request.dart, lib/extensions/streamed_request.dartL8-R29)

Bug Fixes and Improvements:

  • Fixed a bug where copyWith methods for StreamedRequest and MultipartRequest incorrectly modified the original request's properties (e.g., followRedirects, maxRedirects, persistentConnection). (test/extensions/multipart_request_test.dart, test/extensions/multipart_request_test.dartR1-R186)

Updates to Intercepted Client:

  • Updated the _interceptRequest method in InterceptedClient to await the asynchronous copyWith method, ensuring compatibility with the updated BaseRequest. (lib/http/intercepted_client.dart, lib/http/intercepted_client.dartL400-R400)

Comprehensive Test Coverage:

  • Added new tests for BaseRequest.copyWith, StreamedRequest.copyWith, MultipartRequest.copyWith, and IOStreamedResponse.copyWith, covering edge cases, property overrides, and unsupported types. (test/extensions/base_request_test.dart, [1]; test/extensions/io_streamed_response_test.dart, [2]; test/extensions/multipart_request_test.dart, [3]
  • Introduced tests to validate proper handling of unsupported request and response types, ensuring UnsupportedError is thrown as expected. (test/extensions/base_request_test.dart, [1]; test/extensions/base_reponse_test.dart, [2]

Miscellaneous Changes:

  • Added missing imports for dart:async and dart:convert in various files to support asynchronous operations and data encoding. (lib/extensions/base_request.dart, [1]; test/extensions/base_reponse_test.dart, [2]

These changes collectively modernize the copyWith implementation, making it more robust and suitable for handling complex request and response scenarios while ensuring backward compatibility through extensive testing.

techouse avatar Jul 23 '25 06:07 techouse

@CodingAleCR you could potentially merge these tests with the ones in #167

techouse avatar Jul 23 '25 07:07 techouse