mirror of https://github.com/AMT-Cheif/drift.git
70 lines
1.9 KiB
Dart
70 lines
1.9 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:moor/moor.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import 'data/tables/todos.dart';
|
|
import 'data/utils/mocks.dart';
|
|
|
|
void main() {
|
|
TodoDb db;
|
|
MockExecutor executor;
|
|
MockStreamQueries streamQueries;
|
|
|
|
setUp(() {
|
|
executor = MockExecutor();
|
|
streamQueries = MockStreamQueries();
|
|
db = TodoDb(executor)..streamQueries = streamQueries;
|
|
});
|
|
|
|
group('Generates DELETE statements', () {
|
|
test('without any constraints', () async {
|
|
await db.delete(db.users).go();
|
|
|
|
verify(executor.runDelete('DELETE FROM users;', argThat(isEmpty)));
|
|
});
|
|
|
|
test('for complex components', () async {
|
|
await (db.delete(db.users)
|
|
..where((u) => or(not(u.isAwesome), u.id.isSmallerThanValue(100))))
|
|
.go();
|
|
|
|
verify(executor.runDelete(
|
|
'DELETE FROM users WHERE (NOT is_awesome) OR (id < ?);', [100]));
|
|
});
|
|
|
|
test('to delete an entity via a dataclasss', () async {
|
|
await db.delete(db.sharedTodos).delete(SharedTodo(todo: 3, user: 2));
|
|
|
|
verify(executor.runDelete(
|
|
'DELETE FROM shared_todos WHERE (todo = ?) AND (user = ?);', [3, 2]));
|
|
});
|
|
});
|
|
|
|
group('executes DELETE statements', () {
|
|
test('and reports the correct amount of affected rows', () async {
|
|
when(executor.runDelete(any, any)).thenAnswer((_) async => 12);
|
|
|
|
expect(await db.delete(db.users).go(), 12);
|
|
});
|
|
});
|
|
|
|
group('Table updates for delete statements', () {
|
|
test('are issued when data was changed', () async {
|
|
when(executor.runDelete(any, any)).thenAnswer((_) => Future.value(3));
|
|
|
|
await db.delete(db.users).go();
|
|
|
|
verify(streamQueries.handleTableUpdates({db.users}));
|
|
});
|
|
|
|
test('are not issued when no data was changed', () async {
|
|
when(executor.runDelete(any, any)).thenAnswer((_) => Future.value(0));
|
|
|
|
await db.delete(db.users).go();
|
|
|
|
verifyNever(streamQueries.handleTableUpdates(any));
|
|
});
|
|
});
|
|
}
|