Add tests for the migrator

This commit is contained in:
Simon Binder 2019-02-09 20:47:26 +01:00
parent 6a84b0277a
commit 5b8cd7c2e3
2 changed files with 43 additions and 1 deletions

View File

@ -66,7 +66,7 @@ class Migrator {
final sql = StringBuffer();
// ignore: cascade_invocations
sql.write('ALTER TABLE ${table.$tableName} ADD COLUMN');
sql.write('ALTER TABLE ${table.$tableName} ADD COLUMN ');
column.writeColumnDefinition(sql);
return issueCustomQuery(sql.toString());

View File

@ -0,0 +1,42 @@
import 'package:mockito/mockito.dart';
import 'package:sally/sally.dart';
import 'package:test_api/test_api.dart';
import 'generated_tables.dart';
// used so that we can mock the SqlExecutor typedef
abstract class SqlExecutorAsClass {
Future<void> call(String sql);
}
class MockQueryExecutor extends Mock implements SqlExecutorAsClass {}
void main() {
Migrator migrator;
TestDatabase db;
MockQueryExecutor executor;
setUp(() {
executor = MockQueryExecutor();
db = TestDatabase(null);
migrator = Migrator(db, executor);
});
test('generates CREATE TABLE statements', () {
migrator.createAllTables();
verify(executor.call('CREATE TABLE IF NOT EXISTS users (id INTEGER NOT NULL , name VARCHAR NOT NULL , is_awesome BOOLEAN NULL CHECK (is_awesome in (0, 1)))'));
});
test('generates DROP TABLE statements', () {
migrator.deleteTable('users');
verify(executor.call('DROP TABLE IF EXISTS users'));
});
test('generates ALTER TABLE statements to add columns', () {
migrator.addColumn(db.users, db.users.isAwesome);
verify(executor.call('ALTER TABLE users ADD COLUMN is_awesome BOOLEAN NULL CHECK (is_awesome in (0, 1))'));
});
}