import 'package:protevus_client/protevus_client.dart' as c; import 'package:protevus_container/mirrors.dart'; import 'package:protevus_framework/protevus_framework.dart'; import 'package:protevus_rethinkdb/protevus_rethinkdb.dart'; import 'package:protevus_test/protevus_test.dart'; import 'package:logging/logging.dart'; import 'package:belatuk_rethinkdb/belatuk_rethinkdb.dart'; import 'package:test/test.dart'; import 'common.dart'; void main() { Protevus app; late TestClient client; RethinkDb r; late c.Service todoService; setUp(() async { r = RethinkDb(); var conn = await r.connect( db: 'testDB', host: "localhost", port: 28015, user: "admin", password: ""); app = Protevus(reflector: MirrorsReflector()); app.use('/todos', RethinkService(conn, r.table('todos'))); app.errorHandler = (e, req, res) async { print('Whoops: $e'); }; app.logger = Logger.detached('protevus')..onRecord.listen(print); client = await connectTo(app); todoService = client.service('todos'); }); tearDown(() => client.close()); test('index', () async { var result = await todoService.index(); print('Response: $result'); expect(result, isList); }); test('create+read', () async { var todo = Todo(title: 'Clean your room'); var creation = await todoService.create(todo.toJson()); print('Creation: $creation'); var id = creation['id']; var result = await todoService.read(id); print('Response: $result'); expect(result, isMap); expect(result['id'], equals(id)); expect(result['title'], equals(todo.title)); expect(result['completed'], equals(todo.completed)); }); test('modify', () async { var todo = Todo(title: 'Clean your room'); var creation = await todoService.create(todo.toJson()); print('Creation: $creation'); var id = creation['id']; var result = await todoService.modify(id, {'title': 'Eat healthy'}); print('Response: $result'); expect(result, isMap); expect(result['id'], equals(id)); expect(result['title'], equals('Eat healthy')); expect(result['completed'], equals(todo.completed)); }); test('remove', () async { var todo = Todo(title: 'Clean your room'); var creation = await todoService.create(todo.toJson()); print('Creation: $creation'); var id = creation['id']; var result = await todoService.remove(id); print('Response: $result'); expect(result, isMap); expect(result['id'], equals(id)); expect(result['title'], equals(todo.title)); expect(result['completed'], equals(todo.completed)); }); }