From f1f04c5a27093729be646acf8c3c98ecca422131 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 14 Nov 2022 10:53:26 +0300 Subject: Rename files for consistency * Name all tests that test migrations to start with `test_migrations_` --- tests/unit/auth/test_create_table_migrations.py | 75 ---------------------- ...ation_init_data_in_resource_categories_table.py | 52 --------------- tests/unit/auth/test_migrations_create_tables.py | 75 ++++++++++++++++++++++ ...tions_init_data_in_resource_categories_table.py | 52 +++++++++++++++ 4 files changed, 127 insertions(+), 127 deletions(-) delete mode 100644 tests/unit/auth/test_create_table_migrations.py delete mode 100644 tests/unit/auth/test_migration_init_data_in_resource_categories_table.py create mode 100644 tests/unit/auth/test_migrations_create_tables.py create mode 100644 tests/unit/auth/test_migrations_init_data_in_resource_categories_table.py diff --git a/tests/unit/auth/test_create_table_migrations.py b/tests/unit/auth/test_create_table_migrations.py deleted file mode 100644 index ce02f62..0000000 --- a/tests/unit/auth/test_create_table_migrations.py +++ /dev/null @@ -1,75 +0,0 @@ -"""Test migrations that create tables""" -from contextlib import closing - -import pytest -import sqlite3 - -from gn3.migrations import get_migration, apply_migrations, rollback_migrations -from tests.unit.auth.conftest import ( - apply_single_migration, rollback_single_migration, migrations_up_to) - -migrations_and_tables = ( - ("20221103_01_js9ub-initialise-the-auth-entic-oris-ation-database.py", - "users"), - ("20221103_02_sGrIs-create-user-credentials-table.py", "user_credentials"), - ("20221108_01_CoxYh-create-the-groups-table.py", "groups"), - ("20221108_02_wxTr9-create-privileges-table.py", "privileges"), - ("20221108_03_Pbhb1-create-resource-categories-table.py", "resource_categories"), - ("20221110_01_WtZ1I-create-resources-table.py", "resources"), - ("20221110_02_z1dWf-create-mrna-resources-table.py", "mrna_resources"), - ("20221110_03_ka3W0-create-phenotype-resources-table.py", "phenotype_resources"), - ("20221110_04_6PRFQ-create-genotype-resources-table.py", "genotype_resources"), - ("20221110_05_BaNtL-create-roles-table.py", "roles"), - ("20221110_06_Pq2kT-create-generic-roles-table.py", "generic_roles"), - ("20221110_07_7WGa1-create-role-privileges-table.py", "role_privileges"), - ("20221114_01_n8gsF-create-generic-role-privileges-table.py", - "generic_role_privileges")) - -@pytest.mark.unit_test -@pytest.mark.parametrize("migration_file,the_table", migrations_and_tables) -def test_create_table( - auth_testdb_path, auth_migrations_dir, backend, all_migrations, - migration_file, the_table): - """ - GIVEN: A database migration script to create table, `the_table` - WHEN: The migration is applied - THEN: Ensure that the table `the_table` is created - """ - migration_path=f"{auth_migrations_dir}/{migration_file}" - older_migrations = migrations_up_to(migration_path, auth_migrations_dir) - apply_migrations(backend, older_migrations) - with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: - cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") - result_before_migration = cursor.fetchall() - apply_single_migration(backend, get_migration(migration_path)) - cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") - result_after_migration = cursor.fetchall() - - rollback_migrations(backend, older_migrations) - assert the_table not in [row[0] for row in result_before_migration] - assert the_table in [row[0] for row in result_after_migration] - -@pytest.mark.unit_test -@pytest.mark.parametrize("migration_file,the_table", migrations_and_tables) -def test_rollback_create_table( - auth_testdb_path, auth_migrations_dir, backend, migration_file, - the_table): - """ - GIVEN: A database migration script to create the table `the_table` - WHEN: The migration is rolled back - THEN: Ensure that the table `the_table` no longer exists - """ - migration_path=f"{auth_migrations_dir}/{migration_file}" - older_migrations = migrations_up_to(migration_path, auth_migrations_dir) - apply_migrations(backend, older_migrations) - with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: - apply_single_migration(backend, get_migration(migration_path)) - cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") - result_after_migration = cursor.fetchall() - rollback_single_migration(backend, get_migration(migration_path)) - cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") - result_after_rollback = cursor.fetchall() - - rollback_migrations(backend, older_migrations) - assert the_table in [row[0] for row in result_after_migration] - assert the_table not in [row[0] for row in result_after_rollback] diff --git a/tests/unit/auth/test_migration_init_data_in_resource_categories_table.py b/tests/unit/auth/test_migration_init_data_in_resource_categories_table.py deleted file mode 100644 index 8c82c53..0000000 --- a/tests/unit/auth/test_migration_init_data_in_resource_categories_table.py +++ /dev/null @@ -1,52 +0,0 @@ -""" -Test that the `resource_categories` table is initialised with the startup data. -""" -from contextlib import closing - -import pytest -import sqlite3 - -from gn3.migrations import get_migration, apply_migrations, rollback_migrations -from tests.unit.auth.conftest import ( - apply_single_migration, rollback_single_migration, migrations_up_to) - -migration_path = "migrations/auth/20221108_04_CKcSL-init-data-in-resource-categories-table.py" - -@pytest.mark.unit_test -def test_apply_init_data(auth_testdb_path, auth_migrations_dir, backend): - older_migrations = migrations_up_to(migration_path, auth_migrations_dir) - the_migration = get_migration(migration_path) - apply_migrations(backend, older_migrations) - with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: - cursor.execute("SELECT * FROM resource_categories") - assert len(cursor.fetchall()) == 0, "Expected empty table." - apply_single_migration(backend, the_migration) - cursor.execute("SELECT * FROM resource_categories") - results = cursor.fetchall() - assert len(results) == 3, "Expected 3 rows of data." - assert sorted(results) == sorted(( - ('fad071a3-2fc8-40b8-992b-cdefe7dcac79', 'mrna', 'mRNA Dataset'), - ('548d684b-d4d1-46fb-a6d3-51a56b7da1b3', 'phenotype', - 'Phenotype (Publish) Dataset'), - ('48056f84-a2a6-41ac-8319-0e1e212cba2a', 'genotype', - 'Genotype Dataset'))) - - rollback_migrations(backend, older_migrations + [the_migration]) - -@pytest.mark.unit_test -def test_rollback_init_data(auth_testdb_path, auth_migrations_dir, backend): - older_migrations = migrations_up_to(migration_path, auth_migrations_dir) - the_migration = get_migration(migration_path) - apply_migrations(backend, older_migrations) - with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: - cursor.execute("SELECT * FROM resource_categories") - assert len(cursor.fetchall()) == 0, "Expected empty table." - apply_single_migration(backend, the_migration) - cursor.execute("SELECT * FROM resource_categories") - results = cursor.fetchall() - assert len(results) == 3, "Expected 3 rows of data." - rollback_single_migration(backend, the_migration) - cursor.execute("SELECT * FROM resource_categories") - assert len(cursor.fetchall()) == 0, "Expected empty table." - - rollback_migrations(backend, older_migrations) diff --git a/tests/unit/auth/test_migrations_create_tables.py b/tests/unit/auth/test_migrations_create_tables.py new file mode 100644 index 0000000..ce02f62 --- /dev/null +++ b/tests/unit/auth/test_migrations_create_tables.py @@ -0,0 +1,75 @@ +"""Test migrations that create tables""" +from contextlib import closing + +import pytest +import sqlite3 + +from gn3.migrations import get_migration, apply_migrations, rollback_migrations +from tests.unit.auth.conftest import ( + apply_single_migration, rollback_single_migration, migrations_up_to) + +migrations_and_tables = ( + ("20221103_01_js9ub-initialise-the-auth-entic-oris-ation-database.py", + "users"), + ("20221103_02_sGrIs-create-user-credentials-table.py", "user_credentials"), + ("20221108_01_CoxYh-create-the-groups-table.py", "groups"), + ("20221108_02_wxTr9-create-privileges-table.py", "privileges"), + ("20221108_03_Pbhb1-create-resource-categories-table.py", "resource_categories"), + ("20221110_01_WtZ1I-create-resources-table.py", "resources"), + ("20221110_02_z1dWf-create-mrna-resources-table.py", "mrna_resources"), + ("20221110_03_ka3W0-create-phenotype-resources-table.py", "phenotype_resources"), + ("20221110_04_6PRFQ-create-genotype-resources-table.py", "genotype_resources"), + ("20221110_05_BaNtL-create-roles-table.py", "roles"), + ("20221110_06_Pq2kT-create-generic-roles-table.py", "generic_roles"), + ("20221110_07_7WGa1-create-role-privileges-table.py", "role_privileges"), + ("20221114_01_n8gsF-create-generic-role-privileges-table.py", + "generic_role_privileges")) + +@pytest.mark.unit_test +@pytest.mark.parametrize("migration_file,the_table", migrations_and_tables) +def test_create_table( + auth_testdb_path, auth_migrations_dir, backend, all_migrations, + migration_file, the_table): + """ + GIVEN: A database migration script to create table, `the_table` + WHEN: The migration is applied + THEN: Ensure that the table `the_table` is created + """ + migration_path=f"{auth_migrations_dir}/{migration_file}" + older_migrations = migrations_up_to(migration_path, auth_migrations_dir) + apply_migrations(backend, older_migrations) + with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: + cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") + result_before_migration = cursor.fetchall() + apply_single_migration(backend, get_migration(migration_path)) + cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") + result_after_migration = cursor.fetchall() + + rollback_migrations(backend, older_migrations) + assert the_table not in [row[0] for row in result_before_migration] + assert the_table in [row[0] for row in result_after_migration] + +@pytest.mark.unit_test +@pytest.mark.parametrize("migration_file,the_table", migrations_and_tables) +def test_rollback_create_table( + auth_testdb_path, auth_migrations_dir, backend, migration_file, + the_table): + """ + GIVEN: A database migration script to create the table `the_table` + WHEN: The migration is rolled back + THEN: Ensure that the table `the_table` no longer exists + """ + migration_path=f"{auth_migrations_dir}/{migration_file}" + older_migrations = migrations_up_to(migration_path, auth_migrations_dir) + apply_migrations(backend, older_migrations) + with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: + apply_single_migration(backend, get_migration(migration_path)) + cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") + result_after_migration = cursor.fetchall() + rollback_single_migration(backend, get_migration(migration_path)) + cursor.execute("SELECT name FROM sqlite_schema WHERE type='table'") + result_after_rollback = cursor.fetchall() + + rollback_migrations(backend, older_migrations) + assert the_table in [row[0] for row in result_after_migration] + assert the_table not in [row[0] for row in result_after_rollback] diff --git a/tests/unit/auth/test_migrations_init_data_in_resource_categories_table.py b/tests/unit/auth/test_migrations_init_data_in_resource_categories_table.py new file mode 100644 index 0000000..8c82c53 --- /dev/null +++ b/tests/unit/auth/test_migrations_init_data_in_resource_categories_table.py @@ -0,0 +1,52 @@ +""" +Test that the `resource_categories` table is initialised with the startup data. +""" +from contextlib import closing + +import pytest +import sqlite3 + +from gn3.migrations import get_migration, apply_migrations, rollback_migrations +from tests.unit.auth.conftest import ( + apply_single_migration, rollback_single_migration, migrations_up_to) + +migration_path = "migrations/auth/20221108_04_CKcSL-init-data-in-resource-categories-table.py" + +@pytest.mark.unit_test +def test_apply_init_data(auth_testdb_path, auth_migrations_dir, backend): + older_migrations = migrations_up_to(migration_path, auth_migrations_dir) + the_migration = get_migration(migration_path) + apply_migrations(backend, older_migrations) + with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: + cursor.execute("SELECT * FROM resource_categories") + assert len(cursor.fetchall()) == 0, "Expected empty table." + apply_single_migration(backend, the_migration) + cursor.execute("SELECT * FROM resource_categories") + results = cursor.fetchall() + assert len(results) == 3, "Expected 3 rows of data." + assert sorted(results) == sorted(( + ('fad071a3-2fc8-40b8-992b-cdefe7dcac79', 'mrna', 'mRNA Dataset'), + ('548d684b-d4d1-46fb-a6d3-51a56b7da1b3', 'phenotype', + 'Phenotype (Publish) Dataset'), + ('48056f84-a2a6-41ac-8319-0e1e212cba2a', 'genotype', + 'Genotype Dataset'))) + + rollback_migrations(backend, older_migrations + [the_migration]) + +@pytest.mark.unit_test +def test_rollback_init_data(auth_testdb_path, auth_migrations_dir, backend): + older_migrations = migrations_up_to(migration_path, auth_migrations_dir) + the_migration = get_migration(migration_path) + apply_migrations(backend, older_migrations) + with closing(sqlite3.connect(auth_testdb_path)) as conn, closing(conn.cursor()) as cursor: + cursor.execute("SELECT * FROM resource_categories") + assert len(cursor.fetchall()) == 0, "Expected empty table." + apply_single_migration(backend, the_migration) + cursor.execute("SELECT * FROM resource_categories") + results = cursor.fetchall() + assert len(results) == 3, "Expected 3 rows of data." + rollback_single_migration(backend, the_migration) + cursor.execute("SELECT * FROM resource_categories") + assert len(cursor.fetchall()) == 0, "Expected empty table." + + rollback_migrations(backend, older_migrations) -- cgit v1.2.3