Skip to content

Commit 5fa6387

Browse files
authored
fix(datastore): delete default predicate causes deletion failure (#1409)
* fix(datastore): delete default predicate causes deletion failure * fix save integration test
1 parent 881c86b commit 5fa6387

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

packages/amplify_datastore/example/integration_test/save_test.dart

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16+
import 'package:amplify_datastore/amplify_datastore.dart';
1617
import 'package:amplify_datastore_example/models/ModelProvider.dart';
1718
import 'package:integration_test/integration_test.dart';
1819
import 'package:flutter_test/flutter_test.dart';
@@ -71,12 +72,14 @@ void main() {
7172
await Amplify.DataStore.save(testBlog);
7273

7374
var updatedBlog = testBlog.copyWith(name: 'changed name');
74-
await Amplify.DataStore.save(updatedBlog,
75-
where: Blog.NAME.contains("Predicate"));
7675

77-
var blogs = await Amplify.DataStore.query(Blog.classType);
78-
expect(blogs.length, 1);
79-
expect(blogs[0].name, originalBlogName);
76+
expect(
77+
() => Amplify.DataStore.save(updatedBlog,
78+
where: Blog.NAME.contains("Predicate")),
79+
throwsA(predicate((e) =>
80+
e is DataStoreException &&
81+
e.message.contains(
82+
"condition did not match existing model instance"))));
8083
});
8184

8285
testWidgets('predicate should not prevent save for matching model',
@@ -89,7 +92,7 @@ void main() {
8992
const matchingBlogName = 'matching blog name';
9093
var updatedBlog = testBlog.copyWith(name: matchingBlogName);
9194
await Amplify.DataStore.save(updatedBlog,
92-
where: Blog.NAME.contains("matching"));
95+
where: Blog.NAME.contains("original"));
9396

9497
var blogs = await Amplify.DataStore.query(Blog.classType);
9598
expect(blogs.length, 1);

packages/amplify_datastore/ios/Classes/SwiftAmplifyDataStorePlugin.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,8 @@ public class SwiftAmplifyDataStorePlugin: NSObject, FlutterPlugin {
325325
modelSchemaRegistry: modelSchemaRegistry,
326326
modelName: modelName
327327
)
328-
let queryPredicates = try QueryPredicateBuilder.fromSerializedMap(args["queryPredicate"] as? [String : Any])
328+
let queryPredicatesMap = args["queryPredicate"] as? [String : Any];
329+
let queryPredicates = queryPredicatesMap != nil ? try QueryPredicateBuilder.fromSerializedMap(queryPredicatesMap) : nil;
329330

330331
let serializedModelData = try FlutterDataStoreRequestUtils.getSerializedModelData(methodChannelArguments: args)
331332
let modelID = try FlutterDataStoreRequestUtils.getModelID(serializedModelData: serializedModelData)

0 commit comments

Comments
 (0)