http_interceptor
http_interceptor copied to clipboard
chore: fix bugs and add more tests
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
copyWithmethod inBaseRequestwas 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.copyWithmethod was updated to be asynchronous and now usesawaitto handle streams properly. (lib/extensions/streamed_request.dart, lib/extensions/streamed_request.dartL8-R29)
Bug Fixes and Improvements:
- Fixed a bug where
copyWithmethods forStreamedRequestandMultipartRequestincorrectly 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
_interceptRequestmethod inInterceptedClientto await the asynchronouscopyWithmethod, ensuring compatibility with the updatedBaseRequest. (lib/http/intercepted_client.dart, lib/http/intercepted_client.dartL400-R400)
Comprehensive Test Coverage:
- Added new tests for
BaseRequest.copyWith,StreamedRequest.copyWith,MultipartRequest.copyWith, andIOStreamedResponse.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
UnsupportedErroris thrown as expected. (test/extensions/base_request_test.dart, [1];test/extensions/base_reponse_test.dart, [2]
Miscellaneous Changes:
- Added missing imports for
dart:asyncanddart:convertin 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.
@CodingAleCR you could potentially merge these tests with the ones in #167