drift/sally/test/schema_test.dart

57 lines
1.9 KiB
Dart
Raw Normal View History

2019-02-14 09:40:58 -08:00
import 'package:sally/sally.dart';
import 'package:test_api/test_api.dart';
2019-02-14 09:42:28 -08:00
import 'lib/tables/todos.dart';
import 'lib/utils/mocks.dart';
2019-02-14 09:40:58 -08:00
void main() {
TodoDb db;
MockQueryExecutor mockQueryExecutor;
setUp(() {
db = TodoDb(null);
mockQueryExecutor = MockQueryExecutor();
});
group('Migrations', () {
test('creates all tables', () async {
await Migrator(db, mockQueryExecutor).createAllTables();
// should create todos, categories and users table
verify(mockQueryExecutor.call('CREATE TABLE IF NOT EXISTS todos '
2019-02-14 11:46:25 -08:00
'(id INTEGER NOT NULL AUTO INCREMENT, title VARCHAR NULL, '
'content VARCHAR NOT NULL, target_date INTEGER NULL, '
'category INTEGER NULL);'));
2019-02-14 09:40:58 -08:00
verify(mockQueryExecutor.call('CREATE TABLE IF NOT EXISTS categories '
'(id INTEGER NOT NULL AUTO INCREMENT, `desc` VARCHAR NOT NULL);'));
verify(mockQueryExecutor.call('CREATE TABLE IF NOT EXISTS users '
'(id INTEGER NOT NULL AUTO INCREMENT, name VARCHAR NOT NULL, '
'is_awesome BOOLEAN NOT NULL CHECK (is_awesome in (0, 1)));'));
});
test('creates individual tables', () async {
await Migrator(db, mockQueryExecutor).createTable(db.users);
verify(mockQueryExecutor.call('CREATE TABLE IF NOT EXISTS users '
'(id INTEGER NOT NULL AUTO INCREMENT, name VARCHAR NOT NULL, '
'is_awesome BOOLEAN NOT NULL CHECK (is_awesome in (0, 1)));'));
});
test('drops tables', () async {
await Migrator(db, mockQueryExecutor).deleteTable('users');
verify(mockQueryExecutor.call('DROP TABLE IF EXISTS users;'));
});
test('adds columns', () async {
await Migrator(db, mockQueryExecutor)
.addColumn(db.users, db.users.isAwesome);
2019-02-14 09:40:58 -08:00
verify(mockQueryExecutor.call('ALTER TABLE users ADD COLUMN '
'is_awesome BOOLEAN NOT NULL CHECK (is_awesome in (0, 1));'));
});
});
}