From 040615b149f24085f7ea411b83373fc1c960ec5d Mon Sep 17 00:00:00 2001 From: pavanpodila Date: Fri, 5 Jul 2024 08:30:20 +0530 Subject: [PATCH] fix: result type of sanity_client is now dynamic instead of Map --- .../sanity/sanity_client/example/pubspec.lock | 2 +- packages/sanity/sanity_client/lib/client.dart | 2 +- .../sanity_client/lib/response_types.dart | 2 +- .../sanity_client/lib/response_types.g.dart | 4 +-- packages/sanity/sanity_client/pubspec.yaml | 6 ++-- .../sanity/sanity_client/test/query_test.dart | 31 +++++++++++++++++-- 6 files changed, 36 insertions(+), 11 deletions(-) diff --git a/packages/sanity/sanity_client/example/pubspec.lock b/packages/sanity/sanity_client/example/pubspec.lock index 884b877..a2d5e1c 100644 --- a/packages/sanity/sanity_client/example/pubspec.lock +++ b/packages/sanity/sanity_client/example/pubspec.lock @@ -92,7 +92,7 @@ packages: path: ".." relative: true source: path - version: "1.2.0" + version: "1.2.1" sky_engine: dependency: transitive description: flutter diff --git a/packages/sanity/sanity_client/lib/client.dart b/packages/sanity/sanity_client/lib/client.dart index e82e7f3..e12b813 100644 --- a/packages/sanity/sanity_client/lib/client.dart +++ b/packages/sanity/sanity_client/lib/client.dart @@ -79,7 +79,7 @@ Without a valid token you will not be able to fetch data from Sanity.'''); } /// The client for fetching data from Sanity -class SanityClient { +final class SanityClient { /// The configuration for the client final SanityConfig config; diff --git a/packages/sanity/sanity_client/lib/response_types.dart b/packages/sanity/sanity_client/lib/response_types.dart index 07ef1e0..088515a 100644 --- a/packages/sanity/sanity_client/lib/response_types.dart +++ b/packages/sanity/sanity_client/lib/response_types.dart @@ -31,7 +31,7 @@ class SanityDataset { @JsonSerializable() class ServerResponse { /// The result of the query, which can be a null, object or array. - final Map? result; + final dynamic result; /// The time it took for the server to respond to the query. final int ms; diff --git a/packages/sanity/sanity_client/lib/response_types.g.dart b/packages/sanity/sanity_client/lib/response_types.g.dart index fb55b5a..95e183d 100644 --- a/packages/sanity/sanity_client/lib/response_types.g.dart +++ b/packages/sanity/sanity_client/lib/response_types.g.dart @@ -14,7 +14,7 @@ SanityDataset _$SanityDatasetFromJson(Map json) => ServerResponse _$ServerResponseFromJson(Map json) => ServerResponse( - result: json['result'] as Map?, - ms: json['ms'] as int, + result: json['result'], + ms: (json['ms'] as num).toInt(), query: json['query'] as String, ); diff --git a/packages/sanity/sanity_client/pubspec.yaml b/packages/sanity/sanity_client/pubspec.yaml index 0c53d46..2b8934f 100644 --- a/packages/sanity/sanity_client/pubspec.yaml +++ b/packages/sanity/sanity_client/pubspec.yaml @@ -20,14 +20,14 @@ environment: dependencies: flutter: sdk: flutter - json_annotation: ^4.8.1 + json_annotation: ^4.9.0 http: ^1.1.0 dev_dependencies: flutter_test: sdk: flutter - lints: ^3.0.0 - json_serializable: ^6.7.1 + lints: ^4.0.0 + json_serializable: ^6.8.0 build_runner: ^2.4.6 flutter: diff --git a/packages/sanity/sanity_client/test/query_test.dart b/packages/sanity/sanity_client/test/query_test.dart index 8c9688b..bcb5d81 100644 --- a/packages/sanity/sanity_client/test/query_test.dart +++ b/packages/sanity/sanity_client/test/query_test.dart @@ -167,14 +167,14 @@ void main() { ); }); - test('Parses results for valid query', () async { + test('Parses results for valid query, with results as a Map', () async { final httpClient = MockClient( (final request) async => http.Response( ''' { "ms": 20, "query": "", - "result": {} + "result": {"_type": "someType"} } ''', 200, @@ -184,7 +184,32 @@ void main() { final client = getClient(httpClient: httpClient); final response = await client.fetch('valid query'); - expect(response.result, equals({})); + expect(response.result, equals({'_type': 'someType'})); + expect(response.info.serverTimeMs, equals(20)); + }); + + test('Parses results for valid query, with results as a List', () async { + final httpClient = MockClient( + (final request) async => http.Response( + ''' + { + "ms": 20, + "query": "", + "result": [{"_type": "someType"}] + } + ''', + 200, + ), + ); + + final client = getClient(httpClient: httpClient); + + final response = await client.fetch('valid query'); + expect( + response.result, + equals([ + {'_type': 'someType'} + ])); expect(response.info.serverTimeMs, equals(20)); }); }