From dff4f228c093541169281305ece5ca255bd73d39 Mon Sep 17 00:00:00 2001 From: thosakwe Date: Sun, 9 Apr 2017 22:28:29 -0400 Subject: [PATCH] 1.1.5 --- README.md | 2 +- lib/mongo_service.dart | 24 ++++++++++++++++++++++-- pubspec.yaml | 2 +- test/generic_test.dart | 16 ++++++++-------- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index af5838d0..4f3cab7f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # angel_mongo -[![version 1.1.4](https://img.shields.io/badge/pub-1.1.4-brightgreen.svg)](https://pub.dartlang.org/packages/angel_mongo) +[![version 1.1.5](https://img.shields.io/badge/pub-1.1.5-brightgreen.svg)](https://pub.dartlang.org/packages/angel_mongo) [![build status](https://travis-ci.org/angel-dart/mongo.svg?branch=master)](https://travis-ci.org/angel-dart/mongo) MongoDB-enabled services for the Angel framework. diff --git a/lib/mongo_service.dart b/lib/mongo_service.dart index 17dc115f..4659a0eb 100644 --- a/lib/mongo_service.dart +++ b/lib/mongo_service.dart @@ -126,7 +126,17 @@ class MongoService extends Service { @override Future modify(id, data, [Map params]) async { - var target = await read(id, params); + var target; + + try { + target = await read(id, params); + } on AngelHttpException catch (e) { + if (e.statusCode == HttpStatus.NOT_FOUND) + return await create(data, params); + else + rethrow; + } + Map result = mergeMap([ target is Map ? target : god.serializeObject(target), _removeSensitive(data) @@ -146,7 +156,17 @@ class MongoService extends Service { @override Future update(id, data, [Map params]) async { - var target = await read(id, params); + var target; + + try { + target = await read(id, params); + } on AngelHttpException catch (e) { + if (e.statusCode == HttpStatus.NOT_FOUND) + return await create(data, params); + else + rethrow; + } + Map result = _removeSensitive(data); result['_id'] = _makeId(id); result['createdAt'] = diff --git a/pubspec.yaml b/pubspec.yaml index 08e1c9f3..3798e5db 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: angel_mongo -version: 1.1.4 +version: 1.1.5 description: MongoDB-enabled services for the Angel framework. author: Tobe O homepage: https://github.com/angel-dart/angel_mongo diff --git a/test/generic_test.dart b/test/generic_test.dart index 3adc3eaf..aecc6cbd 100644 --- a/test/generic_test.dart +++ b/test/generic_test.dart @@ -73,10 +73,10 @@ main() { test('insert items', () async { var response = await client.post("$url/api", body: god.serialize(testGreeting), headers: headers); - expect(response.statusCode, equals(HttpStatus.OK)); + expect(response.statusCode, isIn([200, 201])); response = await client.get("$url/api"); - expect(response.statusCode, 200); + expect(response.statusCode, isIn([200, 201])); List users = god.deserialize(response.body); expect(users.length, equals(1)); }); @@ -84,11 +84,11 @@ main() { test('read item', () async { var response = await client.post("$url/api", body: god.serialize(testGreeting), headers: headers); - expect(response.statusCode, equals(HttpStatus.OK)); + expect(response.statusCode, isIn([200, 201])); Map created = god.deserialize(response.body); response = await client.get("$url/api/${created['id']}"); - expect(response.statusCode, equals(HttpStatus.OK)); + expect(response.statusCode, isIn([200, 201])); Map read = god.deserialize(response.body); expect(read['id'], equals(created['id'])); expect(read['to'], equals('world')); @@ -98,13 +98,13 @@ main() { test('modify item', () async { var response = await client.post("$url/api", body: god.serialize(testGreeting), headers: headers); - expect(response.statusCode, equals(HttpStatus.OK)); + expect(response.statusCode, isIn([200, 201])); Map created = god.deserialize(response.body); response = await client.patch("$url/api/${created['id']}", body: god.serialize({"to": "Mom"}), headers: headers); Map modified = god.deserialize(response.body); - expect(response.statusCode, equals(HttpStatus.OK)); + expect(response.statusCode, isIn([200, 201])); expect(modified['id'], equals(created['id'])); expect(modified['to'], equals('Mom')); expect(modified['updatedAt'], isNot(null)); @@ -113,13 +113,13 @@ main() { test('update item', () async { var response = await client.post("$url/api", body: god.serialize(testGreeting), headers: headers); - expect(response.statusCode, equals(HttpStatus.OK)); + expect(response.statusCode, isIn([200, 201])); Map created = god.deserialize(response.body); response = await client.post("$url/api/${created['id']}", body: god.serialize({"to": "Updated"}), headers: headers); Map modified = god.deserialize(response.body); - expect(response.statusCode, equals(HttpStatus.OK)); + expect(response.statusCode, isIn([200, 201])); expect(modified['id'], equals(created['id'])); expect(modified['to'], equals('Updated')); expect(modified['updatedAt'], isNot(null));