Upgraded mongo
This commit is contained in:
parent
b76ff8195c
commit
9ba0092b4f
4 changed files with 41 additions and 37 deletions
|
@ -1,5 +1,11 @@
|
|||
# Change Log
|
||||
|
||||
## 8.2.0
|
||||
|
||||
* Require Dart >= 3.3
|
||||
* Upgraded `mongo_dart` to 0.10.2
|
||||
* Fixed deprecated methods
|
||||
|
||||
## 8.1.1
|
||||
|
||||
* Updated repository link
|
||||
|
|
|
@ -73,7 +73,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
|||
for (var key in doc.keys) {
|
||||
var value = doc[key];
|
||||
if (value is ObjectId) {
|
||||
result[key] = value.toHexString();
|
||||
result[key] = value.oid;
|
||||
} else if (value is! RequestContext && value is! ResponseContext) {
|
||||
result[key] = value;
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
|||
|
||||
if (found == null) {
|
||||
throw AngelHttpException.notFound(
|
||||
message: 'No record found for ID ${localId.toHexString()}');
|
||||
message: 'No record found for ID ${localId.oid}');
|
||||
}
|
||||
|
||||
return _jsonify(found, params);
|
||||
|
@ -171,7 +171,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
|||
update: result,
|
||||
returnNew: true) as FutureOr<Map<String, dynamic>>);
|
||||
result = _jsonify(modified, params);
|
||||
result['id'] = _makeId(id).toHexString();
|
||||
result['id'] = _makeId(id).oid;
|
||||
return result;
|
||||
} catch (e, st) {
|
||||
//printDebug(e, st, 'MODIFY');
|
||||
|
@ -199,7 +199,7 @@ class MongoService extends Service<String, Map<String, dynamic>> {
|
|||
returnNew: true,
|
||||
upsert: true) as FutureOr<Map<String, dynamic>>);
|
||||
result = _jsonify(updated, params);
|
||||
result['id'] = _makeId(id).toHexString();
|
||||
result['id'] = _makeId(id).oid;
|
||||
return result;
|
||||
} catch (e, st) {
|
||||
//printDebug(e, st, 'UPDATE');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name: angel3_mongo
|
||||
version: 8.1.1
|
||||
version: 8.2.0
|
||||
description: MongoDB-enabled services for the Angel3 framework. Well-tested.
|
||||
homepage: https://angel3-framework.web.app/
|
||||
repository: https://github.com/dart-backend/angel/tree/master/packages/mongo
|
||||
|
@ -9,7 +9,7 @@ dependencies:
|
|||
angel3_framework: ^8.0.0
|
||||
belatuk_json_serializer: ^7.1.0
|
||||
belatuk_merge_map: ^5.1.0
|
||||
mongo_dart: ^0.9.0
|
||||
mongo_dart: ^0.10.2
|
||||
dev_dependencies:
|
||||
http: ^1.0.0
|
||||
test: ^1.24.0
|
||||
|
|
|
@ -24,11 +24,12 @@ void main() {
|
|||
group('Generic Tests', () {
|
||||
Angel app;
|
||||
late AngelHttp transport;
|
||||
http.Client? client;
|
||||
late http.Client client;
|
||||
var db = Db('mongodb://localhost:27017/angel_mongo');
|
||||
late DbCollection testData;
|
||||
String? url;
|
||||
HookedService<String, Map<String, dynamic>, MongoService>? greetingService;
|
||||
late HookedService<String, Map<String, dynamic>, MongoService>
|
||||
greetingService;
|
||||
|
||||
setUp(() async {
|
||||
app = Angel();
|
||||
|
@ -41,7 +42,7 @@ void main() {
|
|||
|
||||
var service = MongoService(testData);
|
||||
greetingService = HookedService(service);
|
||||
wireHooked(greetingService!);
|
||||
wireHooked(greetingService);
|
||||
|
||||
app.use('/api', greetingService as Service);
|
||||
|
||||
|
@ -54,31 +55,28 @@ void main() {
|
|||
await testData.remove(<String, dynamic>{});
|
||||
await db.close();
|
||||
await transport.close();
|
||||
client = null;
|
||||
url = null;
|
||||
greetingService = null;
|
||||
});
|
||||
|
||||
test('query fields mapped to filters', () async {
|
||||
await greetingService!.create({'foo': 'bar'});
|
||||
await greetingService.create({'foo': 'bar'});
|
||||
expect(
|
||||
await greetingService!.index({
|
||||
await greetingService.index({
|
||||
'query': {'foo': 'not bar'}
|
||||
}),
|
||||
isEmpty,
|
||||
);
|
||||
expect(
|
||||
await greetingService!.index(),
|
||||
await greetingService.index(),
|
||||
isNotEmpty,
|
||||
);
|
||||
});
|
||||
|
||||
test('insert items', () async {
|
||||
var response = await client!.post(Uri.parse('$url/api'),
|
||||
var response = await client.post(Uri.parse('$url/api'),
|
||||
body: god.serialize(testGreeting), headers: headers);
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
|
||||
response = await client!.get(Uri.parse('$url/api'));
|
||||
response = await client.get(Uri.parse('$url/api'));
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
var users = god.deserialize(response.body,
|
||||
outputType: <Map>[].runtimeType) as List<Map>;
|
||||
|
@ -86,12 +84,12 @@ void main() {
|
|||
});
|
||||
|
||||
test('read item', () async {
|
||||
var response = await client!.post(Uri.parse('$url/api'),
|
||||
var response = await client.post(Uri.parse('$url/api'),
|
||||
body: god.serialize(testGreeting), headers: headers);
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
var created = god.deserialize(response.body) as Map;
|
||||
|
||||
response = await client!.get(Uri.parse("$url/api/${created['id']}"));
|
||||
response = await client.get(Uri.parse("$url/api/${created['id']}"));
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
var read = god.deserialize(response.body) as Map;
|
||||
expect(read['id'], equals(created['id']));
|
||||
|
@ -100,37 +98,37 @@ void main() {
|
|||
});
|
||||
|
||||
test('findOne', () async {
|
||||
var response = await client!.post(Uri.parse('$url/api'),
|
||||
var response = await client.post(Uri.parse('$url/api'),
|
||||
body: god.serialize(testGreeting), headers: headers);
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
var created = god.deserialize(response.body) as Map;
|
||||
|
||||
var id = ObjectId.fromHexString(created['id'] as String);
|
||||
var read = await greetingService!.findOne({'query': where.id(id)});
|
||||
var read = await greetingService.findOne({'query': where.id(id)});
|
||||
expect(read['id'], equals(created['id']));
|
||||
expect(read['to'], equals('world'));
|
||||
//expect(read['createdAt'], isNot(null));
|
||||
});
|
||||
|
||||
test('readMany', () async {
|
||||
var response = await client!.post(Uri.parse('$url/api'),
|
||||
var response = await client.post(Uri.parse('$url/api'),
|
||||
body: god.serialize(testGreeting), headers: headers);
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
var created = god.deserialize(response.body) as Map;
|
||||
|
||||
var id = ObjectId.fromHexString(created['id'] as String);
|
||||
var read = await greetingService!.readMany([id.toHexString()]);
|
||||
var read = await greetingService.readMany([id.oid]);
|
||||
expect(read, [created]);
|
||||
//expect(read['createdAt'], isNot(null));
|
||||
});
|
||||
|
||||
test('modify item', () async {
|
||||
var response = await client!.post(Uri.parse('$url/api'),
|
||||
var response = await client.post(Uri.parse('$url/api'),
|
||||
body: god.serialize(testGreeting), headers: headers);
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
var created = god.deserialize(response.body) as Map;
|
||||
|
||||
response = await client!.patch(Uri.parse("$url/api/${created['id']}"),
|
||||
response = await client.patch(Uri.parse("$url/api/${created['id']}"),
|
||||
body: god.serialize({'to': 'Mom'}), headers: headers);
|
||||
var modified = god.deserialize(response.body) as Map;
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
|
@ -140,12 +138,12 @@ void main() {
|
|||
});
|
||||
|
||||
test('update item', () async {
|
||||
var response = await client!.post(Uri.parse('$url/api'),
|
||||
var response = await client.post(Uri.parse('$url/api'),
|
||||
body: god.serialize(testGreeting), headers: headers);
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
var created = god.deserialize(response.body) as Map;
|
||||
|
||||
response = await client!.post(Uri.parse("$url/api/${created['id']}"),
|
||||
response = await client.post(Uri.parse("$url/api/${created['id']}"),
|
||||
body: god.serialize({'to': 'Updated'}), headers: headers);
|
||||
var modified = god.deserialize(response.body) as Map;
|
||||
expect(response.statusCode, isIn([200, 201]));
|
||||
|
@ -155,28 +153,28 @@ void main() {
|
|||
});
|
||||
|
||||
test('remove item', () async {
|
||||
var response = await client!.post(Uri.parse('$url/api'),
|
||||
var response = await client.post(Uri.parse('$url/api'),
|
||||
body: god.serialize(testGreeting), headers: headers);
|
||||
var created = god.deserialize(response.body) as Map;
|
||||
|
||||
var lastCount = (await greetingService!.index()).length;
|
||||
var lastCount = (await greetingService.index()).length;
|
||||
|
||||
await client!.delete(Uri.parse("$url/api/${created['id']}"));
|
||||
expect((await greetingService!.index()).length, equals(lastCount - 1));
|
||||
await client.delete(Uri.parse("$url/api/${created['id']}"));
|
||||
expect((await greetingService.index()).length, equals(lastCount - 1));
|
||||
});
|
||||
|
||||
test('cannot remove all unless explicitly set', () async {
|
||||
var response = await client!.delete(Uri.parse('$url/api/null'));
|
||||
var response = await client.delete(Uri.parse('$url/api/null'));
|
||||
expect(response.statusCode, 403);
|
||||
});
|
||||
|
||||
test('\$sort and query parameters', () async {
|
||||
// Search by where.eq
|
||||
Map world = await greetingService!.create({'to': 'world'});
|
||||
await greetingService!.create({'to': 'Mom'});
|
||||
await greetingService!.create({'to': 'Updated'});
|
||||
Map world = await greetingService.create({'to': 'world'});
|
||||
await greetingService.create({'to': 'Mom'});
|
||||
await greetingService.create({'to': 'Updated'});
|
||||
|
||||
var response = await client!.get(Uri.parse('$url/api?to=world'));
|
||||
var response = await client.get(Uri.parse('$url/api?to=world'));
|
||||
print(response.body);
|
||||
var queried = god.deserialize(response.body,
|
||||
outputType: <Map>[].runtimeType) as List<Map>;
|
||||
|
@ -193,7 +191,7 @@ void main() {
|
|||
expect(queried[1]["id"], equals(Mom["id"]));
|
||||
expect(queried[2]["id"], equals(world["id"]));*/
|
||||
|
||||
queried = await greetingService!.index({
|
||||
queried = await greetingService.index({
|
||||
'\$query': {
|
||||
'_id': where.id(ObjectId.fromHexString(world['id'] as String))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue