mirror of https://github.com/grpc/grpc-dart.git
Fix CallOptions.mergeWith (#786)
It should have symmetric behavior. Given `WebCallOptions a` and `CallOptions b` both `a.mergeWith(b)` and `b.mergeFrom(a)` should return WebCallOptions.
This commit is contained in:
parent
d297a29cb7
commit
a6b94850a1
|
|
@ -1,6 +1,8 @@
|
||||||
## 4.1.0
|
## 4.1.0
|
||||||
* Add a `serverInterceptors` argument to `ConnectionServer`. These interceptors are acting
|
* Add a `serverInterceptors` argument to `ConnectionServer`. These interceptors are acting
|
||||||
as middleware, wrapping a `ServiceMethod` invocation.
|
as middleware, wrapping a `ServiceMethod` invocation.
|
||||||
|
* Make sure that `CallOptions.mergeWith` is symmetric: given `WebCallOptions`
|
||||||
|
it should return `WebCallOptions`.
|
||||||
|
|
||||||
## 4.0.4
|
## 4.0.4
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,11 @@ class CallOptions {
|
||||||
|
|
||||||
CallOptions mergedWith(CallOptions? other) {
|
CallOptions mergedWith(CallOptions? other) {
|
||||||
if (other == null) return this;
|
if (other == null) return this;
|
||||||
|
|
||||||
|
if (other is WebCallOptions) {
|
||||||
|
return other.mergedWith(this);
|
||||||
|
}
|
||||||
|
|
||||||
final mergedMetadata = Map.of(metadata)..addAll(other.metadata);
|
final mergedMetadata = Map.of(metadata)..addAll(other.metadata);
|
||||||
final mergedTimeout = other.timeout ?? timeout;
|
final mergedTimeout = other.timeout ?? timeout;
|
||||||
final mergedProviders = List.of(metadataProviders)
|
final mergedProviders = List.of(metadataProviders)
|
||||||
|
|
|
||||||
|
|
@ -34,15 +34,20 @@ void main() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('WebCallOptions mergeWith CallOptions returns WebCallOptions', () {
|
test('WebCallOptions mergeWith CallOptions returns WebCallOptions', () {
|
||||||
final options =
|
final options1 =
|
||||||
WebCallOptions(bypassCorsPreflight: true, withCredentials: true);
|
WebCallOptions(bypassCorsPreflight: true, withCredentials: true);
|
||||||
final metadata = {'test': '42'};
|
final metadata = {'test': '42'};
|
||||||
final mergedOptions =
|
final options2 = CallOptions(metadata: metadata);
|
||||||
options.mergedWith(CallOptions(metadata: metadata)) as WebCallOptions;
|
final mergedOptions1 = options1.mergedWith(options2) as WebCallOptions;
|
||||||
|
final mergedOptions2 = options2.mergedWith(options1) as WebCallOptions;
|
||||||
|
|
||||||
expect(mergedOptions.metadata, metadata);
|
expect(mergedOptions1.metadata, metadata);
|
||||||
expect(mergedOptions.bypassCorsPreflight, true);
|
expect(mergedOptions1.bypassCorsPreflight, true);
|
||||||
expect(mergedOptions.withCredentials, true);
|
expect(mergedOptions1.withCredentials, true);
|
||||||
|
|
||||||
|
expect(mergedOptions2.metadata, metadata);
|
||||||
|
expect(mergedOptions2.bypassCorsPreflight, true);
|
||||||
|
expect(mergedOptions2.withCredentials, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
test(
|
test(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue