@_nazmiforreal/flutter-ota 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/flutter-ota-linux-x64 +0 -0
- package/dart-src/packages/cli-tools/.dart_tool/package_config.json +46 -76
- package/dart-src/packages/cli-tools/.dart_tool/package_graph.json +140 -166
- package/dart-src/packages/cli-tools/README.md +1 -1
- package/dart-src/packages/cli-tools/lib/flutter_ota_kit_cli.dart +30 -17
- package/dart-src/packages/cli-tools/lib/src/backend.dart +30 -31
- package/dart-src/packages/cli-tools/lib/src/cli_base.dart +3 -1
- package/dart-src/packages/cli-tools/lib/src/commands/build.dart +44 -43
- package/dart-src/packages/cli-tools/lib/src/commands/bundle.dart +265 -239
- package/dart-src/packages/cli-tools/lib/src/commands/channel.dart +75 -66
- package/dart-src/packages/cli-tools/lib/src/commands/config_command.dart +39 -35
- package/dart-src/packages/cli-tools/lib/src/commands/console.dart +30 -27
- package/dart-src/packages/cli-tools/lib/src/commands/deploy.dart +88 -72
- package/dart-src/packages/cli-tools/lib/src/commands/doctor.dart +66 -29
- package/dart-src/packages/cli-tools/lib/src/commands/fingerprint.dart +10 -6
- package/dart-src/packages/cli-tools/lib/src/commands/init.dart +299 -190
- package/dart-src/packages/cli-tools/lib/src/commands/keys.dart +24 -23
- package/dart-src/packages/cli-tools/lib/src/commands/migrate.dart +111 -97
- package/dart-src/packages/cli-tools/lib/src/commands/pocketbase.dart +237 -0
- package/dart-src/packages/cli-tools/lib/src/commands/rollback.dart +43 -34
- package/dart-src/packages/cli-tools/lib/src/commands/storage.dart +57 -53
- package/dart-src/packages/cli-tools/lib/src/config.dart +227 -93
- package/dart-src/packages/cli-tools/lib/src/operations.dart +9 -8
- package/dart-src/packages/cli-tools/lib/src/pack.dart +26 -25
- package/dart-src/packages/cli-tools/lib/src/pocketbase/data_bootstrap.dart +39 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/hooks/bundles.pb.js +56 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/installer.dart +189 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/process_manager.dart +123 -0
- package/dart-src/packages/cli-tools/lib/src/pocketbase/schema_installer.dart +237 -0
- package/dart-src/packages/cli-tools/lib/src/runner.dart +36 -15
- package/dart-src/packages/cli-tools/lib/src/sign.dart +13 -5
- package/dart-src/packages/cli-tools/lib/src/ui/ui.dart +10 -13
- package/dart-src/packages/cli-tools/lib/src/util.dart +3 -1
- package/dart-src/packages/cli-tools/pubspec.lock +69 -116
- package/dart-src/packages/cli-tools/pubspec.yaml +25 -7
- package/dart-src/packages/cli-tools/test/backends_test.dart +62 -32
- package/dart-src/packages/cli-tools/test/build_pack_test.dart +4 -4
- package/dart-src/packages/cli-tools/test/cli_test.dart +89 -42
- package/dart-src/packages/cli-tools/test/mocks/mock_aws_s3_client.dart +8 -13
- package/dart-src/packages/cli-tools/test/mocks/mock_d1_client.dart +23 -18
- package/dart-src/packages/cli-tools/test/mocks/mock_pocketbase_client.dart +197 -0
- package/dart-src/packages/cli-tools/test/mocks/mock_postgres_client.dart +70 -46
- package/dart-src/packages/cli-tools/test/pocketbase_installer_test.dart +72 -0
- package/dart-src/packages/cli-tools/test/pocketbase_schema_test.dart +107 -0
- package/dart-src/packages/cli-tools/test/pocketbase_smoke_test.dart +59 -0
- package/dart-src/packages/core/README.md +2 -2
- package/dart-src/packages/core/example/lib/main.dart +69 -0
- package/dart-src/packages/core/lib/flutter_ota_kit_core.dart +1 -1
- package/dart-src/packages/core/lib/src/app_update_info.dart +17 -15
- package/dart-src/packages/core/lib/src/bundle.dart +102 -94
- package/dart-src/packages/core/lib/src/bundle_artifacts.dart +1 -2
- package/dart-src/packages/core/lib/src/bundle_patch_artifact.dart +15 -16
- package/dart-src/packages/core/lib/src/changed_asset.dart +24 -22
- package/dart-src/packages/core/lib/src/get_bundles_args.dart +13 -13
- package/dart-src/packages/core/lib/src/metadata.dart +9 -7
- package/dart-src/packages/core/lib/src/patch_info.dart +8 -7
- package/dart-src/packages/core/lib/src/platform.dart +4 -3
- package/dart-src/packages/core/lib/src/rollout.dart +14 -11
- package/dart-src/packages/core/lib/src/semver_range.dart +49 -39
- package/dart-src/packages/core/lib/src/semver_version.dart +8 -7
- package/dart-src/packages/core/lib/src/status.dart +4 -3
- package/dart-src/packages/core/lib/src/update_bundle_params.dart +7 -7
- package/dart-src/packages/core/lib/src/uuid.dart +1 -2
- package/dart-src/packages/core/pubspec.yaml +6 -7
- package/dart-src/packages/core/test/rollout_test.dart +15 -8
- package/dart-src/packages/core/test/semver_test.dart +5 -2
- package/dart-src/packages/core/test/types_test.dart +26 -24
- package/dart-src/packages/core/test/uuid_test.dart +3 -1
- package/dart-src/packages/core/tool/dbg.dart +1 -0
- package/dart-src/plugins/aws/CHANGELOG.md +6 -0
- package/dart-src/plugins/aws/example/lib/main.dart +60 -0
- package/dart-src/plugins/aws/lib/flutter_ota_kit_aws.dart +5 -1
- package/dart-src/plugins/aws/lib/src/aws_cloudfront_client.dart +11 -16
- package/dart-src/plugins/aws/lib/src/aws_cloudfront_signer.dart +7 -2
- package/dart-src/plugins/aws/lib/src/aws_database.dart +14 -18
- package/dart-src/plugins/aws/lib/src/aws_s3_client.dart +23 -18
- package/dart-src/plugins/aws/lib/src/aws_ssm_client.dart +5 -4
- package/dart-src/plugins/aws/lib/src/aws_storage.dart +2 -3
- package/dart-src/plugins/aws/lib/src/aws_storage_profile.dart +10 -16
- package/dart-src/plugins/aws/lib/src/with_cloudfront_signed_url.dart +6 -9
- package/dart-src/plugins/aws/pubspec.yaml +15 -10
- package/dart-src/plugins/aws/test/aws_database_test.dart +51 -57
- package/dart-src/plugins/aws/test/mock_aws_s3_client.dart +8 -13
- package/dart-src/plugins/cloudflare/CHANGELOG.md +7 -0
- package/dart-src/plugins/cloudflare/example/lib/main.dart +62 -0
- package/dart-src/plugins/cloudflare/lib/flutter_ota_kit_cloudflare.dart +4 -2
- package/dart-src/plugins/cloudflare/lib/src/cloudflare_worker_database.dart +3 -3
- package/dart-src/plugins/cloudflare/lib/src/d1_build_where.dart +3 -2
- package/dart-src/plugins/cloudflare/lib/src/d1_bundle_mapper.dart +24 -27
- package/dart-src/plugins/cloudflare/lib/src/d1_database_plugin.dart +22 -30
- package/dart-src/plugins/cloudflare/lib/src/r2_config.dart +1 -1
- package/dart-src/plugins/cloudflare/lib/src/r2_s3_client.dart +21 -29
- package/dart-src/plugins/cloudflare/lib/src/r2_storage.dart +7 -7
- package/dart-src/plugins/cloudflare/lib/src/r2_storage_profile.dart +7 -15
- package/dart-src/plugins/cloudflare/pubspec.yaml +14 -9
- package/dart-src/plugins/cloudflare/test/cloudflare_worker_database_test.dart +46 -42
- package/dart-src/plugins/cloudflare/test/d1_database_test.dart +100 -90
- package/dart-src/plugins/cloudflare/test/mock_d1_client.dart +23 -18
- package/dart-src/plugins/cloudflare/test/mock_r2_client.dart +8 -13
- package/dart-src/plugins/cloudflare/test/r2_storage_test.dart +1 -4
- package/dart-src/plugins/plugin-core/CHANGELOG.md +16 -0
- package/dart-src/plugins/plugin-core/example/lib/main.dart +61 -0
- package/dart-src/plugins/plugin-core/lib/flutter_ota_kit_plugin_core.dart +3 -7
- package/dart-src/plugins/plugin-core/lib/src/asset_storage_layout.dart +5 -5
- package/dart-src/plugins/plugin-core/lib/src/bundle_helpers.dart +23 -0
- package/dart-src/plugins/plugin-core/lib/src/bundle_storage_layout.dart +16 -10
- package/dart-src/plugins/plugin-core/lib/src/bundle_unit_of_work.dart +31 -26
- package/dart-src/plugins/plugin-core/lib/src/calculate_pagination.dart +5 -1
- package/dart-src/plugins/plugin-core/lib/src/content_addressed_assets.dart +1 -1
- package/dart-src/plugins/plugin-core/lib/src/create_blob_database_plugin.dart +78 -71
- package/dart-src/plugins/plugin-core/lib/src/create_database_plugin.dart +56 -35
- package/dart-src/plugins/plugin-core/lib/src/create_storage_plugin.dart +10 -13
- package/dart-src/plugins/plugin-core/lib/src/paginate_bundles.dart +30 -17
- package/dart-src/plugins/plugin-core/lib/src/parse_storage_uri.dart +3 -1
- package/dart-src/plugins/plugin-core/lib/src/query_bundles.dart +5 -3
- package/dart-src/plugins/plugin-core/lib/src/request_update_bundle_state.dart +2 -4
- package/dart-src/plugins/plugin-core/lib/src/storage_helpers.dart +18 -0
- package/dart-src/plugins/plugin-core/lib/src/types.dart +7 -6
- package/dart-src/plugins/plugin-core/pubspec.yaml +12 -9
- package/dart-src/plugins/plugin-core/test/asset_storage_layout_test.dart +13 -9
- package/dart-src/plugins/plugin-core/test/bundle_unit_of_work_test.dart +28 -15
- package/dart-src/plugins/plugin-core/test/create_blob_database_plugin_test.dart +254 -122
- package/dart-src/plugins/plugin-core/test/create_database_plugin_test.dart +36 -32
- package/dart-src/plugins/plugin-core/test/create_storage_plugin_test.dart +18 -15
- package/dart-src/plugins/plugin-core/test/generate_min_bundle_id_test.dart +8 -3
- package/dart-src/plugins/plugin-core/test/get_update_info_test.dart +682 -693
- package/dart-src/plugins/plugin-core/test/helpers_test.dart +45 -21
- package/dart-src/plugins/plugin-core/test/query_bundles_test.dart +76 -13
- package/dart-src/plugins/plugin-core/test/uuidv7_test.dart +20 -9
- package/dart-src/plugins/pocketbase/CHANGELOG.md +8 -0
- package/dart-src/plugins/pocketbase/LICENSE +21 -0
- package/dart-src/plugins/pocketbase/README.md +54 -0
- package/dart-src/plugins/pocketbase/example/lib/main.dart +62 -0
- package/dart-src/plugins/pocketbase/lib/flutter_ota_kit_pocketbase.dart +28 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_bundle_mapper.dart +121 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_client.dart +349 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_config.dart +61 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_database.dart +278 -0
- package/dart-src/plugins/pocketbase/lib/src/pocketbase_storage.dart +255 -0
- package/dart-src/plugins/pocketbase/pubspec.yaml +26 -0
- package/dart-src/plugins/pocketbase/test/pb_uri_test.dart +12 -0
- package/dart-src/plugins/postgres/CHANGELOG.md +6 -0
- package/dart-src/plugins/postgres/example/lib/main.dart +67 -0
- package/dart-src/plugins/postgres/lib/flutter_ota_kit_postgres.dart +3 -6
- package/dart-src/plugins/postgres/lib/src/postgres_bundle_mapper.dart +32 -52
- package/dart-src/plugins/postgres/lib/src/postgres_config.dart +3 -1
- package/dart-src/plugins/postgres/lib/src/postgres_database.dart +28 -38
- package/dart-src/plugins/postgres/lib/src/postgres_get_update_info.dart +16 -14
- package/dart-src/plugins/postgres/lib/src/postgres_storage.dart +26 -14
- package/dart-src/plugins/postgres/lib/src/postgres_types.dart +27 -28
- package/dart-src/plugins/postgres/pubspec.yaml +14 -9
- package/dart-src/plugins/postgres/test/mock_postgres_client.dart +62 -39
- package/dart-src/plugins/postgres/test/postgres_bundle_mapper_test.dart +3 -4
- package/dart-src/plugins/postgres/test/postgres_database_test.dart +102 -73
- package/dart-src/plugins/postgres/test/postgres_storage_runtime_test.dart +60 -0
- package/dart-src/plugins/supabase/CHANGELOG.md +17 -0
- package/dart-src/plugins/supabase/README.md +2 -2
- package/dart-src/plugins/supabase/example/lib/main.dart +63 -0
- package/dart-src/plugins/supabase/lib/flutter_ota_kit_supabase.dart +2 -0
- package/dart-src/plugins/supabase/lib/src/error_message.dart +11 -0
- package/dart-src/plugins/supabase/lib/src/supabase_bundle_mapper.dart +34 -58
- package/dart-src/plugins/supabase/lib/src/supabase_client_adapter.dart +3 -13
- package/dart-src/plugins/supabase/lib/src/supabase_client_http.dart +34 -52
- package/dart-src/plugins/supabase/lib/src/supabase_database.dart +38 -30
- package/dart-src/plugins/supabase/lib/src/supabase_edge_function_storage.dart +21 -29
- package/dart-src/plugins/supabase/lib/src/supabase_signed_url_batcher.dart +7 -19
- package/dart-src/plugins/supabase/lib/src/supabase_storage.dart +18 -29
- package/dart-src/plugins/supabase/lib/src/types.dart +26 -26
- package/dart-src/plugins/supabase/pubspec.yaml +14 -9
- package/dart-src/plugins/supabase/test/mock_supabase_client.dart +57 -57
- package/dart-src/plugins/supabase/test/supabase_bundle_mapper_test.dart +30 -27
- package/dart-src/plugins/supabase/test/supabase_database_test.dart +26 -35
- package/dart-src/plugins/supabase/test/supabase_storage_test.dart +27 -34
- package/package.json +2 -2
- package/scripts/vendor.sh +1 -1
|
@@ -37,8 +37,7 @@ List<Bundle> getRequestUpdateBundleSeeds(Map<String, Object?>? context) {
|
|
|
37
37
|
RequestUpdateBundleResolver createRequestUpdateBundleResolver(
|
|
38
38
|
Map<String, Object?>? context,
|
|
39
39
|
) {
|
|
40
|
-
final unitOfWork =
|
|
41
|
-
getRequestBundleUnitOfWork(context) ?? BundleUnitOfWork();
|
|
40
|
+
final unitOfWork = getRequestBundleUnitOfWork(context) ?? BundleUnitOfWork();
|
|
42
41
|
return _RequestUpdateBundleResolverImpl(unitOfWork);
|
|
43
42
|
}
|
|
44
43
|
|
|
@@ -57,6 +56,5 @@ class _RequestUpdateBundleResolverImpl implements RequestUpdateBundleResolver {
|
|
|
57
56
|
Future<Bundle?> getById(
|
|
58
57
|
String bundleId,
|
|
59
58
|
Future<Bundle?> Function() loadBundleById,
|
|
60
|
-
) =>
|
|
61
|
-
_unitOfWork.getById(bundleId, loadBundleById);
|
|
59
|
+
) => _unitOfWork.getById(bundleId, loadBundleById);
|
|
62
60
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// Throws [ArgumentError] if the bucket parsed from a storage URI does not
|
|
2
|
+
/// match the configured bucket. Shared by every S3-compatible storage profile
|
|
3
|
+
/// (R2, AWS S3, …) so the check lives in exactly one place.
|
|
4
|
+
void ensureExpectedBucket(String bucket, String bucketName) {
|
|
5
|
+
if (bucket != bucketName) {
|
|
6
|
+
throw ArgumentError(
|
|
7
|
+
'Bucket name mismatch: expected "$bucketName", but found "$bucket".',
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/// Matches the `update.json` manifest key layout
|
|
13
|
+
/// `{channel}/{platform}/{version|fingerprintHash}/update.json`.
|
|
14
|
+
/// Shared by the blob-database plugins (AWS S3 + the blob-database factory)
|
|
15
|
+
/// so the pattern is defined exactly once.
|
|
16
|
+
final RegExp updateJsonKeyRegex = RegExp(
|
|
17
|
+
r'^[^/]+/(?:ios|android)/[^/]+/update\.json$',
|
|
18
|
+
);
|
|
@@ -86,10 +86,7 @@ class DatabaseBundleQueryWhere {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
class DatabaseBundleQueryOrder {
|
|
89
|
-
const DatabaseBundleQueryOrder({
|
|
90
|
-
this.field = 'id',
|
|
91
|
-
this.direction = 'desc',
|
|
92
|
-
});
|
|
89
|
+
const DatabaseBundleQueryOrder({this.field = 'id', this.direction = 'desc'});
|
|
93
90
|
|
|
94
91
|
final String field;
|
|
95
92
|
final String direction;
|
|
@@ -141,9 +138,13 @@ abstract class DatabasePlugin {
|
|
|
141
138
|
Future<UpdateInfo?> getUpdateInfo(GetBundlesArgs args);
|
|
142
139
|
|
|
143
140
|
Future<Paginated<List<Bundle>>> getBundles(
|
|
144
|
-
|
|
141
|
+
DatabaseBundleQueryOptions options,
|
|
142
|
+
);
|
|
145
143
|
|
|
146
|
-
Future<void> updateBundle(
|
|
144
|
+
Future<void> updateBundle(
|
|
145
|
+
String targetBundleId,
|
|
146
|
+
Map<String, Object?> newBundle,
|
|
147
|
+
);
|
|
147
148
|
|
|
148
149
|
Future<void> appendBundle(Bundle insertBundle);
|
|
149
150
|
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
name: flutter_ota_kit_plugin_core
|
|
2
2
|
description: Plugin core abstractions for flutter_ota_kit — database, storage, and build interfaces.
|
|
3
|
-
version: 0.0.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
documentation: https://github.com/HYPER12755/flutter_ota_kit#readme
|
|
3
|
+
version: 0.0.3
|
|
4
|
+
homepage: https://github.com/HYPER12755/flutter-ota-kit
|
|
5
|
+
repository: https://github.com/HYPER12755/flutter-ota-kit
|
|
6
|
+
issue_tracker: https://github.com/HYPER12755/flutter-ota-kit/issues
|
|
7
|
+
documentation: https://github.com/HYPER12755/flutter-ota-kit#readme
|
|
9
8
|
license: MIT
|
|
10
9
|
|
|
11
10
|
environment:
|
|
12
|
-
sdk: ">=3.
|
|
11
|
+
sdk: ">=3.13.2 <4.0.0"
|
|
13
12
|
|
|
14
13
|
dependencies:
|
|
15
|
-
flutter_ota_kit_core: ^0.1.
|
|
16
|
-
mime: ^
|
|
14
|
+
flutter_ota_kit_core: ^0.1.1
|
|
15
|
+
mime: ^2.0.0
|
|
17
16
|
|
|
18
17
|
dev_dependencies:
|
|
19
18
|
test: ^1.25.0
|
|
20
19
|
lints: ^5.1.0
|
|
20
|
+
|
|
21
|
+
dependency_overrides:
|
|
22
|
+
flutter_ota_kit_core:
|
|
23
|
+
path: ../../packages/core
|
|
@@ -17,13 +17,15 @@ void main() {
|
|
|
17
17
|
);
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
test(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
test(
|
|
21
|
+
'classifies non-/assets roots as legacy per-bundle file storage',
|
|
22
|
+
() {
|
|
23
|
+
expect(
|
|
24
|
+
getAssetStorageLayout('s3://bucket/releases/bundle-id/files'),
|
|
25
|
+
'legacy-files',
|
|
26
|
+
);
|
|
27
|
+
},
|
|
28
|
+
);
|
|
27
29
|
});
|
|
28
30
|
|
|
29
31
|
group('getManifestAssetStoragePath', () {
|
|
@@ -78,8 +80,10 @@ void main() {
|
|
|
78
80
|
group('isBrotliManifestAssetPath', () {
|
|
79
81
|
test('matches index.*.bundle paths', () {
|
|
80
82
|
expect(isBrotliManifestAssetPath('index.ios.bundle'), isTrue);
|
|
81
|
-
expect(
|
|
82
|
-
|
|
83
|
+
expect(
|
|
84
|
+
isBrotliManifestAssetPath('nested/index.android.bundle'),
|
|
85
|
+
isTrue,
|
|
86
|
+
);
|
|
83
87
|
});
|
|
84
88
|
|
|
85
89
|
test('rejects non-index bundle paths', () {
|
|
@@ -2,7 +2,8 @@ import 'package:flutter_ota_kit_plugin_core/src/bundle_unit_of_work.dart';
|
|
|
2
2
|
import 'package:flutter_ota_kit_plugin_core/src/types.dart';
|
|
3
3
|
import 'package:test/test.dart';
|
|
4
4
|
|
|
5
|
-
Bundle _bundle(
|
|
5
|
+
Bundle _bundle(
|
|
6
|
+
String id, {
|
|
6
7
|
String channel = 'production',
|
|
7
8
|
Platform platform = Platform.android,
|
|
8
9
|
bool enabled = true,
|
|
@@ -57,11 +58,17 @@ void main() {
|
|
|
57
58
|
final b1 = _bundle('a');
|
|
58
59
|
uow.markInsert(b1);
|
|
59
60
|
// Seed with different data — insert should stay
|
|
60
|
-
uow.seed([
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
uow.seed([
|
|
62
|
+
Bundle(
|
|
63
|
+
id: 'a',
|
|
64
|
+
platform: Platform.android,
|
|
65
|
+
shouldForceUpdate: false,
|
|
66
|
+
enabled: false,
|
|
67
|
+
fileHash: 'other',
|
|
68
|
+
storageUri: 'other',
|
|
69
|
+
channel: 'production',
|
|
70
|
+
),
|
|
71
|
+
]);
|
|
65
72
|
final changed = uow.changedSets();
|
|
66
73
|
expect(changed.length, 1);
|
|
67
74
|
expect(changed.first.data.fileHash, 'hash_a'); // original insert
|
|
@@ -114,13 +121,15 @@ void main() {
|
|
|
114
121
|
test('returns cached entry on second call', () {
|
|
115
122
|
var loadCount = 0;
|
|
116
123
|
uow.seed([_bundle('a')]);
|
|
117
|
-
return uow
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
return uow
|
|
125
|
+
.getById('a', () async {
|
|
126
|
+
loadCount++;
|
|
127
|
+
return _bundle('a');
|
|
128
|
+
})
|
|
129
|
+
.then((b) {
|
|
130
|
+
expect(b, isNotNull);
|
|
131
|
+
expect(loadCount, 0); // never called — seed provided it
|
|
132
|
+
});
|
|
124
133
|
});
|
|
125
134
|
|
|
126
135
|
test('loads and caches missing entry', () async {
|
|
@@ -172,8 +181,12 @@ void main() {
|
|
|
172
181
|
test('markUpdate on existing insert keeps insert', () {
|
|
173
182
|
final b1 = _bundle('a');
|
|
174
183
|
final b2 = Bundle(
|
|
175
|
-
id: 'a',
|
|
176
|
-
|
|
184
|
+
id: 'a',
|
|
185
|
+
platform: Platform.android,
|
|
186
|
+
shouldForceUpdate: false,
|
|
187
|
+
enabled: false,
|
|
188
|
+
fileHash: 'hash2',
|
|
189
|
+
storageUri: 'uri2',
|
|
177
190
|
channel: 'production',
|
|
178
191
|
);
|
|
179
192
|
uow.markInsert(b1);
|