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()