2222from sqlalchemy import Table
2323
2424from airflow .exceptions import AirflowException
25- from airflow .utils .db import initdb
25+ from airflow .utils .db import downgrade , initdb
2626from airflow .utils .db_manager import RunDBManager
2727
2828from tests_common .test_utils .config import conf_vars
@@ -57,12 +57,27 @@ def test_defining_table_same_name_as_airflow_table_name_raises(self):
5757 run_db_manager .validate ()
5858 metadata ._remove_table ("dag_run" , None )
5959
60+ @mock .patch .object (RunDBManager , "downgrade" )
6061 @mock .patch .object (RunDBManager , "upgradedb" )
6162 @mock .patch .object (RunDBManager , "initdb" )
62- def test_init_db_calls_rundbmanager (self , mock_initdb , mock_upgrade_db , session ):
63+ def test_init_db_calls_rundbmanager (self , mock_initdb , mock_upgrade_db , mock_downgrade_db , session ):
6364 initdb (session = session )
6465 mock_initdb .assert_called ()
6566 mock_initdb .assert_called_once_with (session )
67+ mock_downgrade_db .assert_not_called ()
68+
69+ @mock .patch .object (RunDBManager , "downgrade" )
70+ @mock .patch .object (RunDBManager , "upgradedb" )
71+ @mock .patch .object (RunDBManager , "initdb" )
72+ @mock .patch ("alembic.command" )
73+ def test_downgrade_dont_call_rundbmanager (
74+ self , mock_alembic_command , mock_initdb , mock_upgrade_db , mock_downgrade_db , session
75+ ):
76+ downgrade (to_revision = "base" )
77+ mock_alembic_command .downgrade .assert_called_once_with (mock .ANY , revision = "base" , sql = False )
78+ mock_upgrade_db .assert_not_called ()
79+ mock_initdb .assert_not_called ()
80+ mock_downgrade_db .assert_not_called ()
6681
6782 @conf_vars (
6883 {("database" , "external_db_managers" ): "airflow.providers.fab.auth_manager.models.db.FABDBManager" }
@@ -78,7 +93,9 @@ def test_rundbmanager_calls_dbmanager_methods(self, mock_fabdb_manager, session)
7893 # upgradedb
7994 ext_db .upgradedb (session = session )
8095 fabdb_manager .upgradedb .assert_called_once ()
81- # drop_tables
96+ # downgrade
97+ ext_db .downgrade (session = session )
98+ mock_fabdb_manager .return_value .downgrade .assert_called_once ()
8299 connection = mock .MagicMock ()
83100 ext_db .drop_tables (session , connection )
84101 mock_fabdb_manager .return_value .drop_tables .assert_called_once_with (connection )
0 commit comments