Add tests for isInValues and isNotInValues

This commit is contained in:
Alexander Wilde 2022-11-04 13:04:31 +00:00
parent d7e91ec270
commit 84a22c620c
1 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,84 @@
import 'package:mockito/mockito.dart';
import 'package:test/test.dart';
import '../../generated/converter.dart';
import '../../generated/custom_tables.dart';
import '../../test_utils/test_utils.dart';
const _createConfig = 'CREATE TABLE IF NOT EXISTS "config" ('
'"config_key" TEXT not null primary key, '
'"config_value" TEXT, '
'"sync_state" INTEGER, '
'"sync_state_implicit" INTEGER) STRICT;';
void main() {
// see ../data/tables/tables.drift
late MockExecutor mock;
late CustomTablesDb db;
setUp(() {
mock = MockExecutor();
db = CustomTablesDb(mock);
});
tearDown(() => db.close());
test('creates everything as specified in .drift files', () async {
await db.createMigrator().createAll();
verify(mock.runCustom(_createConfig, []));
});
test('isInValues', () async {
expect(
db.select(db.config)
..where((tbl) => tbl.syncState.isInValues([
SyncType.synchronized,
SyncType.locallyCreated,
])),
generates('SELECT * FROM "config" WHERE "sync_state" IN (?, ?) AND "sync_state" IS NOT NULL', [
ConfigTable.$converter0.toSql(SyncType.synchronized),
ConfigTable.$converter0.toSql(SyncType.locallyCreated),
]),
);
expect(
db.select(db.config)
..where((tbl) => tbl.syncState.isInValues([
SyncType.synchronized,
SyncType.locallyCreated,
null,
])),
generates('SELECT * FROM "config" WHERE "sync_state" IN (?, ?) OR "sync_state" IS NULL', [
ConfigTable.$converter0.toSql(SyncType.synchronized),
ConfigTable.$converter0.toSql(SyncType.locallyCreated),
]),
);
});
test('isNotInValues', () async {
expect(
db.select(db.config)
..where((tbl) => tbl.syncState.isNotInValues([
SyncType.synchronized,
SyncType.locallyCreated,
])),
generates('SELECT * FROM "config" WHERE "sync_state" NOT IN (?, ?) OR "sync_state" IS NULL', [
ConfigTable.$converter0.toSql(SyncType.synchronized),
ConfigTable.$converter0.toSql(SyncType.locallyCreated),
]),
);
expect(
db.select(db.config)
..where((tbl) => tbl.syncState.isNotInValues([
SyncType.synchronized,
SyncType.locallyCreated,
null,
])),
generates('SELECT * FROM "config" WHERE "sync_state" NOT IN (?, ?) AND "sync_state" IS NOT NULL', [
ConfigTable.$converter0.toSql(SyncType.synchronized),
ConfigTable.$converter0.toSql(SyncType.locallyCreated),
]),
);
});
}