chore: use raw json for update release and create patch requests (#2164)
This commit is contained in:
@@ -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(
|
||||
|
||||
+4
-3
@@ -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;
|
||||
}
|
||||
|
||||
+4
-4
@@ -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,
|
||||
};
|
||||
|
||||
+3
-3
@@ -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;
|
||||
|
||||
+3
-3
@@ -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;
|
||||
|
||||
+3
-2
@@ -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;
|
||||
}
|
||||
|
||||
+3
-6
@@ -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
-4
@@ -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(),
|
||||
|
||||
+3
-3
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user