import 'package:platform_driver_rethinkdb/platform_driver_rethinkdb.dart'; import 'package:test/test.dart'; main() { RethinkDb r = RethinkDb(); String? databaseName; String? tableName; String? testDbName; bool shouldDropTable = false; Connection? connection; setUp(() async { connection = await r.connect(); if (testDbName == null) { String useDb = await r.uuid().run(connection!); testDbName = 'unit_test_db${useDb.replaceAll("-", "")}'; await r.dbCreate(testDbName!).run(connection!); } if (databaseName == null) { String dbName = await r.uuid().run(connection!); databaseName = "test_database_${dbName.replaceAll("-", "")}"; } if (tableName == null) { String tblName = await r.uuid().run(connection!); tableName = "test_table_${tblName.replaceAll("-", "")}"; } connection!.use(testDbName!); }); tearDown(() async { if (shouldDropTable) { shouldDropTable = false; await r.tableDrop(tableName!).run(connection!); connection!.close(); } else { connection!.close(); } }); group("count command -> ", () { test("should count an array", () async { int count = await r.expr([1, 2, 3]).count().run(connection); expect(count, equals(3)); }); test("should count an array with a filter", () async { int count = await r.expr([2, 1, 2, 3, 2, 2]).count(2).run(connection); expect(count, equals(4)); }); test("should count items in a table", () async { await r.tableCreate(tableName!).run(connection!); List testData = [ {"id": 1}, {"id": 2}, {"id": 3}, {"id": 4}, {"id": 5} ]; await r.table(tableName!).insert(testData).run(connection!); int count = await r.table(tableName!).count().run(connection!); expect(count, equals(5)); }); test("should count items in a table with a filter", () async { List testData = [ {"id": 6, "age": 21}, {"id": 7, "age": 22}, {"id": 8, "age": 21}, {"id": 9, "age": 33}, {"id": 10, "age": 34} ]; await r.table(tableName!).insert(testData).run(connection!); int count = await r.table(tableName!)('age').count(21).run(connection); expect(count, equals(2)); count = await r.table(tableName!).count((user) { return user('id').lt(8); }).run(connection!); expect(count, equals(7)); }); test("remove the test database", () async { Map response = await r.dbDrop(testDbName!).run(connection!); expect(response.containsKey('config_changes'), equals(true)); expect(response['dbs_dropped'], equals(1)); expect(response['tables_dropped'], equals(1)); }); }); }