29 lines
956 B
Python
29 lines
956 B
Python
import sqlite3
|
|
|
|
from backend.app.database import DEFAULT_TAGS, apply_migrations, get_schema_version, seed_default_tags
|
|
|
|
|
|
def test_database_migrations_are_versioned_and_idempotent():
|
|
connection = sqlite3.connect(':memory:')
|
|
|
|
apply_migrations(connection)
|
|
assert get_schema_version(connection) == 4
|
|
tables = {
|
|
row[0]
|
|
for row in connection.execute(
|
|
"SELECT name FROM sqlite_master WHERE type = 'table'"
|
|
)
|
|
}
|
|
assert {
|
|
'users', 'tokens', 'links', 'plugins', 'user_plugin_config', 'tags', 'link_tags'
|
|
} <= tables
|
|
columns = {row[1] for row in connection.execute('PRAGMA table_info(tags)')}
|
|
assert 'created_by' in columns
|
|
seed_default_tags(connection)
|
|
seeded_tags = {row[0] for row in connection.execute('SELECT name FROM tags')}
|
|
assert set(DEFAULT_TAGS) <= seeded_tags
|
|
|
|
apply_migrations(connection)
|
|
assert get_schema_version(connection) == 4
|
|
|
|
connection.close() |