From 1fa4cdb0515f2efc803e5ddb4f4f13d73b71e48d Mon Sep 17 00:00:00 2001 From: Bryan Oltman Date: Wed, 29 May 2024 12:55:16 -0400 Subject: [PATCH] chore: use raw json for update release and create patch requests (#2164) --- .../lib/src/code_push_client_wrapper.dart | 4 +- .../src/code_push_client_wrapper_test.dart | 41 ++++++++++++++++++- .../example/main.dart | 2 +- .../lib/src/code_push_client.dart | 4 +- .../test/src/code_push_client_test.dart | 8 ++-- .../create_patch/create_patch_request.dart | 7 ++-- .../create_patch/create_patch_request.g.dart | 8 ++-- .../create_patch_artifact_response.g.dart | 6 +-- .../create_release_artifact_response.g.dart | 6 +-- .../update_release_request.dart | 5 ++- .../update_release_request.g.dart | 9 ++-- .../lib/src/models/release.g.dart | 2 +- .../lib/src/models/release_artifact.g.dart | 6 +-- .../create_patch_request_test.dart | 8 ++-- .../update_release_request_test.dart | 6 +-- 15 files changed, 79 insertions(+), 43 deletions(-) diff --git a/packages/shorebird_cli/lib/src/code_push_client_wrapper.dart b/packages/shorebird_cli/lib/src/code_push_client_wrapper.dart index 9c392d63..355d5230 100644 --- a/packages/shorebird_cli/lib/src/code_push_client_wrapper.dart +++ b/packages/shorebird_cli/lib/src/code_push_client_wrapper.dart @@ -271,7 +271,7 @@ Please create a release using "shorebird release" and try again. releaseId: releaseId, platform: platform, status: status, - metadata: metadata, + metadata: metadata?.toJson(), ); updateStatusProgress.complete(); } catch (error) { @@ -665,7 +665,7 @@ aar artifact already exists, continuing...''', final patch = await codePushClient.createPatch( appId: appId, releaseId: releaseId, - metadata: metadata, + metadata: metadata.toJson(), ); createPatchProgress.complete(); return patch; diff --git a/packages/shorebird_cli/test/src/code_push_client_wrapper_test.dart b/packages/shorebird_cli/test/src/code_push_client_wrapper_test.dart index 7d87586d..1ae0d7a5 100644 --- a/packages/shorebird_cli/test/src/code_push_client_wrapper_test.dart +++ b/packages/shorebird_cli/test/src/code_push_client_wrapper_test.dart @@ -1823,6 +1823,43 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console' ).called(1); verify(() => progress.complete()).called(1); }); + + group('when metadata is provided', () { + setUp(() { + when( + () => codePushClient.updateReleaseStatus( + appId: any(named: 'appId'), + releaseId: any(named: 'releaseId'), + platform: any(named: 'platform'), + status: any(named: 'status'), + metadata: any(named: 'metadata'), + ), + ).thenAnswer((_) async {}); + }); + + test('updates release status with metadata as json', () async { + await runWithOverrides( + () => codePushClientWrapper.updateReleaseStatus( + appId: app.appId, + releaseId: releaseId, + platform: releasePlatform, + status: ReleaseStatus.active, + metadata: UpdateReleaseMetadata.forTest(), + ), + ); + + verify( + () => codePushClient.updateReleaseStatus( + appId: app.appId, + releaseId: releaseId, + platform: releasePlatform, + status: ReleaseStatus.active, + metadata: UpdateReleaseMetadata.forTest().toJson(), + ), + ).called(1); + verify(() => progress.complete()).called(1); + }); + }); }); group('patch', () { @@ -2031,7 +2068,7 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console' () => codePushClient.createPatch( appId: appId, releaseId: releaseId, - metadata: CreatePatchMetadata.forTest(), + metadata: CreatePatchMetadata.forTest().toJson(), ), ).called(1); verify( @@ -2087,7 +2124,7 @@ You can manage this release in the ${link(uri: uri, message: 'Shorebird Console' () => codePushClient.createPatch( appId: appId, releaseId: releaseId, - metadata: CreatePatchMetadata.forTest(), + metadata: CreatePatchMetadata.forTest().toJson(), ), ).called(1); verify( diff --git a/packages/shorebird_code_push_client/example/main.dart b/packages/shorebird_code_push_client/example/main.dart index b6716f2e..d795f658 100644 --- a/packages/shorebird_code_push_client/example/main.dart +++ b/packages/shorebird_code_push_client/example/main.dart @@ -56,7 +56,7 @@ Future main() async { shorebirdVersion: '1.2.3', xcodeVersion: null, ), - ), + ).toJson(), ); // Create a patch artifact. diff --git a/packages/shorebird_code_push_client/lib/src/code_push_client.dart b/packages/shorebird_code_push_client/lib/src/code_push_client.dart index 00459c0a..1b667ad4 100644 --- a/packages/shorebird_code_push_client/lib/src/code_push_client.dart +++ b/packages/shorebird_code_push_client/lib/src/code_push_client.dart @@ -257,7 +257,7 @@ class CodePushClient { Future createPatch({ required String appId, required int releaseId, - required CreatePatchMetadata metadata, + required Json metadata, }) async { final request = CreatePatchRequest( releaseId: releaseId, @@ -307,7 +307,7 @@ class CodePushClient { required int releaseId, required ReleasePlatform platform, required ReleaseStatus status, - UpdateReleaseMetadata? metadata, + Json? metadata, }) async { final response = await _httpClient.patch( Uri.parse('$_v1/apps/$appId/releases/$releaseId'), diff --git a/packages/shorebird_code_push_client/test/src/code_push_client_test.dart b/packages/shorebird_code_push_client/test/src/code_push_client_test.dart index df1ea29b..a9424032 100644 --- a/packages/shorebird_code_push_client/test/src/code_push_client_test.dart +++ b/packages/shorebird_code_push_client/test/src/code_push_client_test.dart @@ -899,7 +899,7 @@ void main() { .createPatch( appId: appId, releaseId: releaseId, - metadata: CreatePatchMetadata.forTest(), + metadata: CreatePatchMetadata.forTest().toJson(), ) .ignore(); final request = verify(() => httpClient.send(captureAny())) @@ -922,7 +922,7 @@ void main() { codePushClient.createPatch( appId: appId, releaseId: releaseId, - metadata: CreatePatchMetadata.forTest(), + metadata: CreatePatchMetadata.forTest().toJson(), ), throwsA( isA().having( @@ -946,7 +946,7 @@ void main() { codePushClient.createPatch( appId: appId, releaseId: releaseId, - metadata: CreatePatchMetadata.forTest(), + metadata: CreatePatchMetadata.forTest().toJson(), ), throwsA( isA().having( @@ -976,7 +976,7 @@ void main() { codePushClient.createPatch( appId: appId, releaseId: releaseId, - metadata: CreatePatchMetadata.forTest(), + metadata: CreatePatchMetadata.forTest().toJson(), ), completion( equals( diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.dart b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.dart index 400721e7..4d606fda 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.dart @@ -1,5 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:shorebird_code_push_protocol/src/models/create_patch_metadata.dart'; +import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart'; part 'create_patch_request.g.dart'; @@ -28,6 +28,7 @@ class CreatePatchRequest { /// Whether the user used the --force flag when authoring this patch. final bool? wasForced; - /// Additional information about the creation of the patch. - final CreatePatchMetadata metadata; + /// Additional information about the command that was run to create the patch + /// and the environment in which it was run. + final Json metadata; } diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.g.dart b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.g.dart index c2a129b6..ccf08dd6 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.g.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_request.g.dart @@ -14,10 +14,10 @@ CreatePatchRequest _$CreatePatchRequestFromJson(Map json) => json, ($checkedConvert) { final val = CreatePatchRequest( - releaseId: $checkedConvert('release_id', (v) => (v as num).toInt()), + releaseId: $checkedConvert('release_id', (v) => v as int), wasForced: $checkedConvert('was_forced', (v) => v as bool?), - metadata: $checkedConvert('metadata', - (v) => CreatePatchMetadata.fromJson(v as Map)), + metadata: + $checkedConvert('metadata', (v) => v as Map), ); return val; }, @@ -28,5 +28,5 @@ Map _$CreatePatchRequestToJson(CreatePatchRequest instance) => { 'release_id': instance.releaseId, 'was_forced': instance.wasForced, - 'metadata': instance.metadata.toJson(), + 'metadata': instance.metadata, }; diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch_artifact/create_patch_artifact_response.g.dart b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch_artifact/create_patch_artifact_response.g.dart index 5a3aca31..58d79ec1 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch_artifact/create_patch_artifact_response.g.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch_artifact/create_patch_artifact_response.g.dart @@ -15,13 +15,13 @@ CreatePatchArtifactResponse _$CreatePatchArtifactResponseFromJson( json, ($checkedConvert) { final val = CreatePatchArtifactResponse( - id: $checkedConvert('id', (v) => (v as num).toInt()), - patchId: $checkedConvert('patch_id', (v) => (v as num).toInt()), + id: $checkedConvert('id', (v) => v as int), + patchId: $checkedConvert('patch_id', (v) => v as int), arch: $checkedConvert('arch', (v) => v as String), platform: $checkedConvert( 'platform', (v) => $enumDecode(_$ReleasePlatformEnumMap, v)), hash: $checkedConvert('hash', (v) => v as String), - size: $checkedConvert('size', (v) => (v as num).toInt()), + size: $checkedConvert('size', (v) => v as int), url: $checkedConvert('url', (v) => v as String), ); return val; diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/create_release_artifact/create_release_artifact_response.g.dart b/packages/shorebird_code_push_protocol/lib/src/messages/create_release_artifact/create_release_artifact_response.g.dart index ae1757fd..be9c1b1f 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/create_release_artifact/create_release_artifact_response.g.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/create_release_artifact/create_release_artifact_response.g.dart @@ -15,13 +15,13 @@ CreateReleaseArtifactResponse _$CreateReleaseArtifactResponseFromJson( json, ($checkedConvert) { final val = CreateReleaseArtifactResponse( - id: $checkedConvert('id', (v) => (v as num).toInt()), - releaseId: $checkedConvert('release_id', (v) => (v as num).toInt()), + id: $checkedConvert('id', (v) => v as int), + releaseId: $checkedConvert('release_id', (v) => v as int), arch: $checkedConvert('arch', (v) => v as String), platform: $checkedConvert( 'platform', (v) => $enumDecode(_$ReleasePlatformEnumMap, v)), hash: $checkedConvert('hash', (v) => v as String), - size: $checkedConvert('size', (v) => (v as num).toInt()), + size: $checkedConvert('size', (v) => v as int), url: $checkedConvert('url', (v) => v as String), ); return val; diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.dart b/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.dart index 801c8bfc..18c44d42 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.dart @@ -28,6 +28,7 @@ class UpdateReleaseRequest { /// The platform of the release. final ReleasePlatform platform; - /// Additional information about the release. - final UpdateReleaseMetadata? metadata; + /// Additional information about the command that was run to update the + /// Release and then environment in which it was run. + final Json? metadata; } diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.g.dart b/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.g.dart index c2244c7d..dcc11637 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.g.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/update_release/update_release_request.g.dart @@ -19,11 +19,8 @@ UpdateReleaseRequest _$UpdateReleaseRequestFromJson( 'status', (v) => $enumDecode(_$ReleaseStatusEnumMap, v)), platform: $checkedConvert( 'platform', (v) => $enumDecode(_$ReleasePlatformEnumMap, v)), - metadata: $checkedConvert( - 'metadata', - (v) => v == null - ? null - : UpdateReleaseMetadata.fromJson(v as Map)), + metadata: + $checkedConvert('metadata', (v) => v as Map?), ); return val; }, @@ -34,7 +31,7 @@ Map _$UpdateReleaseRequestToJson( { 'status': _$ReleaseStatusEnumMap[instance.status]!, 'platform': _$ReleasePlatformEnumMap[instance.platform]!, - 'metadata': instance.metadata?.toJson(), + 'metadata': instance.metadata, }; const _$ReleaseStatusEnumMap = { diff --git a/packages/shorebird_code_push_protocol/lib/src/models/release.g.dart b/packages/shorebird_code_push_protocol/lib/src/models/release.g.dart index 535e894d..11e6c22c 100644 --- a/packages/shorebird_code_push_protocol/lib/src/models/release.g.dart +++ b/packages/shorebird_code_push_protocol/lib/src/models/release.g.dart @@ -13,7 +13,7 @@ Release _$ReleaseFromJson(Map json) => $checkedCreate( json, ($checkedConvert) { final val = Release( - id: $checkedConvert('id', (v) => (v as num).toInt()), + id: $checkedConvert('id', (v) => v as int), appId: $checkedConvert('app_id', (v) => v as String), version: $checkedConvert('version', (v) => v as String), flutterRevision: diff --git a/packages/shorebird_code_push_protocol/lib/src/models/release_artifact.g.dart b/packages/shorebird_code_push_protocol/lib/src/models/release_artifact.g.dart index 84ede88c..d06b3e84 100644 --- a/packages/shorebird_code_push_protocol/lib/src/models/release_artifact.g.dart +++ b/packages/shorebird_code_push_protocol/lib/src/models/release_artifact.g.dart @@ -14,13 +14,13 @@ ReleaseArtifact _$ReleaseArtifactFromJson(Map json) => json, ($checkedConvert) { final val = ReleaseArtifact( - id: $checkedConvert('id', (v) => (v as num).toInt()), - releaseId: $checkedConvert('release_id', (v) => (v as num).toInt()), + id: $checkedConvert('id', (v) => v as int), + releaseId: $checkedConvert('release_id', (v) => v as int), arch: $checkedConvert('arch', (v) => v as String), platform: $checkedConvert( 'platform', (v) => $enumDecode(_$ReleasePlatformEnumMap, v)), hash: $checkedConvert('hash', (v) => v as String), - size: $checkedConvert('size', (v) => (v as num).toInt()), + size: $checkedConvert('size', (v) => v as int), url: $checkedConvert('url', (v) => v as String), ); return val; diff --git a/packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_request_test.dart b/packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_request_test.dart index 54f3f484..007a0a1d 100644 --- a/packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_request_test.dart +++ b/packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_request_test.dart @@ -4,10 +4,10 @@ import 'package:test/test.dart'; void main() { group(CreatePatchRequest, () { test('can be (de)serialized', () { - const request = CreatePatchRequest( + final request = CreatePatchRequest( releaseId: 1234, wasForced: true, - metadata: CreatePatchMetadata( + metadata: const CreatePatchMetadata( releasePlatform: ReleasePlatform.android, usedIgnoreAssetChangesFlag: true, usedIgnoreNativeChangesFlag: false, @@ -20,7 +20,7 @@ void main() { shorebirdVersion: '1.2.3', xcodeVersion: null, ), - ), + ).toJson(), ); expect( CreatePatchRequest.fromJson(request.toJson()).toJson(), @@ -32,7 +32,7 @@ void main() { final request = CreatePatchRequest( releaseId: 1234, wasForced: true, - metadata: CreatePatchMetadata.forTest(), + metadata: CreatePatchMetadata.forTest().toJson(), ); expect( CreatePatchRequest.fromJson(request.toJson()).toJson(), diff --git a/packages/shorebird_code_push_protocol/test/src/messages/update_release/update_release_request_test.dart b/packages/shorebird_code_push_protocol/test/src/messages/update_release/update_release_request_test.dart index 4cdc626b..2b05eae6 100644 --- a/packages/shorebird_code_push_protocol/test/src/messages/update_release/update_release_request_test.dart +++ b/packages/shorebird_code_push_protocol/test/src/messages/update_release/update_release_request_test.dart @@ -4,10 +4,10 @@ import 'package:test/test.dart'; void main() { group(UpdateReleaseRequest, () { test('can be (de)serialized', () { - const request = UpdateReleaseRequest( + final request = UpdateReleaseRequest( platform: ReleasePlatform.android, status: ReleaseStatus.active, - metadata: UpdateReleaseMetadata( + metadata: const UpdateReleaseMetadata( releasePlatform: ReleasePlatform.ios, flutterVersionOverride: null, generatedApks: null, @@ -17,7 +17,7 @@ void main() { shorebirdVersion: '1.2.3', xcodeVersion: '15.3', ), - ), + ).toJson(), ); expect( UpdateReleaseRequest.fromJson(request.toJson()).toJson(),