chore: use raw json for update release and create patch requests (#2164)

This commit is contained in:
Bryan Oltman
2024-05-29 12:55:16 -04:00
committed by GitHub
parent ac7363732a
commit 1fa4cdb051
15 changed files with 79 additions and 43 deletions
@@ -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;
@@ -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(
@@ -56,7 +56,7 @@ Future<void> main() async {
shorebirdVersion: '1.2.3',
xcodeVersion: null,
),
),
).toJson(),
);
// Create a patch artifact.
@@ -257,7 +257,7 @@ class CodePushClient {
Future<Patch> 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'),
@@ -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<CodePushException>().having(
@@ -946,7 +946,7 @@ void main() {
codePushClient.createPatch(
appId: appId,
releaseId: releaseId,
metadata: CreatePatchMetadata.forTest(),
metadata: CreatePatchMetadata.forTest().toJson(),
),
throwsA(
isA<CodePushException>().having(
@@ -976,7 +976,7 @@ void main() {
codePushClient.createPatch(
appId: appId,
releaseId: releaseId,
metadata: CreatePatchMetadata.forTest(),
metadata: CreatePatchMetadata.forTest().toJson(),
),
completion(
equals(
@@ -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;
}
@@ -14,10 +14,10 @@ CreatePatchRequest _$CreatePatchRequestFromJson(Map<String, dynamic> 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<String, dynamic>)),
metadata:
$checkedConvert('metadata', (v) => v as Map<String, dynamic>),
);
return val;
},
@@ -28,5 +28,5 @@ Map<String, dynamic> _$CreatePatchRequestToJson(CreatePatchRequest instance) =>
<String, dynamic>{
'release_id': instance.releaseId,
'was_forced': instance.wasForced,
'metadata': instance.metadata.toJson(),
'metadata': instance.metadata,
};
@@ -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;
@@ -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;
@@ -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;
}
@@ -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<String, dynamic>)),
metadata:
$checkedConvert('metadata', (v) => v as Map<String, dynamic>?),
);
return val;
},
@@ -34,7 +31,7 @@ Map<String, dynamic> _$UpdateReleaseRequestToJson(
<String, dynamic>{
'status': _$ReleaseStatusEnumMap[instance.status]!,
'platform': _$ReleasePlatformEnumMap[instance.platform]!,
'metadata': instance.metadata?.toJson(),
'metadata': instance.metadata,
};
const _$ReleaseStatusEnumMap = {
@@ -13,7 +13,7 @@ Release _$ReleaseFromJson(Map<String, dynamic> 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:
@@ -14,13 +14,13 @@ ReleaseArtifact _$ReleaseArtifactFromJson(Map<String, dynamic> 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;
@@ -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(),
@@ -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(),