@@ -40,6 +40,7 @@ def _conflict_response(mocker: MockerFixture, error_code: str) -> t.Any:
4040 resp .raise_for_status .side_effect = requests .HTTPError (response = resp )
4141 return resp
4242
43+
4344def _record_catalogs_at_execute (adapter : FabricEngineAdapter ) -> t .List [t .Optional [str ]]:
4445 catalogs : t .List [t .Optional [str ]] = []
4546 real_execute = adapter .execute
@@ -52,15 +53,18 @@ def execute(*args: t.Any, **kwargs: t.Any) -> None:
5253 return catalogs
5354
5455
55- def test_get_current_catalog_uses_only_explicit_target_catalog (
56+ def test_get_current_catalog_returns_configured_database_when_target_is_default (
5657 make_mocked_engine_adapter : t .Callable ,
5758):
5859 adapter = make_mocked_engine_adapter (
5960 FabricEngineAdapter ,
6061 database = "default_catalog" ,
6162 )
6263
63- assert adapter .get_current_catalog () is None
64+ current_catalog = adapter .get_current_catalog ()
65+ assert current_catalog is not None
66+ assert current_catalog .lower () == "default_catalog"
67+ assert adapter ._target_catalog is None
6468
6569 adapter ._target_catalog = "switched_catalog"
6670
@@ -69,10 +73,31 @@ def test_get_current_catalog_uses_only_explicit_target_catalog(
6973 adapter ._connection_pool .close ()
7074
7175 assert adapter ._connection_pool .get_attribute ("target_catalog" ) is None
72- assert adapter .get_current_catalog () is None
76+ assert adapter .get_current_catalog () == "default_catalog"
7377 adapter .cursor .execute .assert_not_called ()
7478
7579
80+ def test_shared_catalog_operations_can_lowercase_the_default_warehouse (
81+ make_mocked_engine_adapter : t .Callable ,
82+ ):
83+ """test_catalog_operations lowercases the current catalog, then restores it."""
84+ adapter = make_mocked_engine_adapter (
85+ FabricEngineAdapter ,
86+ database = "ci_abc" ,
87+ )
88+
89+ current_catalog = adapter .get_current_catalog ().lower ()
90+ assert current_catalog == "ci_abc"
91+ assert adapter ._target_catalog is None
92+
93+ adapter .set_current_catalog ("testing" )
94+ assert adapter .get_current_catalog ().lower () == "testing"
95+
96+ adapter .set_current_catalog (current_catalog )
97+ assert adapter .get_current_catalog ().lower () == current_catalog
98+ assert adapter ._target_catalog is None
99+
100+
76101def test_get_current_catalog_returns_none_without_target_or_database (
77102 make_mocked_engine_adapter : t .Callable ,
78103):
@@ -108,7 +133,8 @@ def test_set_current_catalog_to_default_clears_explicit_target(
108133 adapter .set_current_catalog ("planning" )
109134 adapter .set_current_catalog ("core" )
110135
111- assert adapter .get_current_catalog () is None
136+ assert adapter ._target_catalog is None
137+ assert adapter .get_current_catalog () == "core"
112138 adapter .cursor .execute .assert_not_called ()
113139
114140
@@ -130,8 +156,9 @@ def test_catalog_scoped_call_restores_to_neutral_without_close(
130156 # Decorator calls set_current_catalog("planning") then set_current_catalog(None).
131157 # Only the first call (None→planning) should trigger a connection close.
132158 assert close_spy .call_count == 1
159+ assert adapter ._target_catalog is None
133160 assert adapter ._connected_catalog == "planning"
134- assert adapter .get_current_catalog () is None
161+ assert adapter .get_current_catalog () == "core"
135162
136163
137164def test_default_catalog_after_non_default_catalog_reconnects (
@@ -150,8 +177,9 @@ def test_default_catalog_after_non_default_catalog_reconnects(
150177 adapter .table_exists ("core.db.table" )
151178
152179 assert close_spy .call_count == 2
180+ assert adapter ._target_catalog is None
153181 assert adapter ._connected_catalog is None
154- assert adapter .get_current_catalog () is None
182+ assert adapter .get_current_catalog () == "core"
155183
156184
157185def test_repeated_same_catalog_reuses_connection (
@@ -507,7 +535,7 @@ def test_create_warehouse_unrelated_conflict_still_raises(
507535 fabric_http_client .create_warehouse ("my_warehouse" )
508536
509537
510- def test_get_data_objects_uses_default_catalog_when_current_is_none (
538+ def test_get_data_objects_uses_configured_default_catalog (
511539 make_mocked_engine_adapter : t .Callable ,
512540 mocker : MockerFixture ,
513541) -> None :
@@ -517,7 +545,8 @@ def test_get_data_objects_uses_default_catalog_when_current_is_none(
517545 database = "ci_abc" ,
518546 patch_get_data_objects = False ,
519547 )
520- assert adapter .get_current_catalog () is None
548+ assert adapter ._target_catalog is None
549+ assert adapter .get_current_catalog () == "ci_abc"
521550
522551 mocker .patch .object (
523552 adapter ,
@@ -564,9 +593,11 @@ def test_get_data_objects_labels_connected_warehouse_after_lazy_restore(
564593 make_mocked_engine_adapter : t .Callable ,
565594 mocker : MockerFixture ,
566595) -> None :
567- """Logical catalog is None ; the connection is still on planning.
596+ """Logical target is the default ; the connection is still on planning.
568597
569- Unqualified list must be planning. ci_abc.dbo must still switch.
598+ The public catalog is the configured warehouse. The unqualified list must
599+ still be planning, because that is the warehouse the query hits.
600+ ci_abc.dbo must still switch.
570601 """
571602 adapter = make_mocked_engine_adapter (
572603 FabricEngineAdapter ,
@@ -576,7 +607,9 @@ def test_get_data_objects_labels_connected_warehouse_after_lazy_restore(
576607 )
577608 adapter .set_current_catalog ("planning" )
578609 adapter .set_current_catalog (None )
579- assert adapter .get_current_catalog () is None
610+ assert adapter ._target_catalog is None
611+ assert adapter ._connected_catalog == "planning"
612+ assert adapter .get_current_catalog () == "ci_abc"
580613
581614 fetchdf = mocker .patch .object (
582615 adapter ,
0 commit comments