@@ -2626,6 +2626,11 @@ def test_load_table_without_storage_credentials(
26262626def test_rename_view_204 (rest_mock : Mocker ) -> None :
26272627 from_identifier = ("some_namespace" , "old_view" )
26282628 to_identifier = ("some_namespace" , "new_view" )
2629+ rest_mock .head (
2630+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2631+ status_code = 200 ,
2632+ request_headers = TEST_HEADERS ,
2633+ )
26292634 rest_mock .post (
26302635 f"{ TEST_URI } v1/views/rename" ,
26312636 json = {
@@ -2639,13 +2644,18 @@ def test_rename_view_204(rest_mock: Mocker) -> None:
26392644 catalog .rename_view (from_identifier , to_identifier )
26402645 assert (
26412646 rest_mock .last_request .text
2642- == """ {"source": {"namespace": ["some_namespace"], "name": "old_view"}, "destination": {"namespace": ["some_namespace"], "name": "new_view"}}"""
2647+ == ''' {"source": {"namespace": ["some_namespace"], "name": "old_view"}, "destination": {"namespace": ["some_namespace"], "name": "new_view"}}'''
26432648 )
26442649
26452650
26462651def test_rename_view_404 (rest_mock : Mocker ) -> None :
26472652 from_identifier = ("some_namespace" , "non_existent_view" )
26482653 to_identifier = ("some_namespace" , "new_view" )
2654+ rest_mock .head (
2655+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2656+ status_code = 200 ,
2657+ request_headers = TEST_HEADERS ,
2658+ )
26492659 rest_mock .post (
26502660 f"{ TEST_URI } v1/views/rename" ,
26512661 json = {
@@ -2667,6 +2677,11 @@ def test_rename_view_404(rest_mock: Mocker) -> None:
26672677def test_rename_view_409 (rest_mock : Mocker ) -> None :
26682678 from_identifier = ("some_namespace" , "old_view" )
26692679 to_identifier = ("some_namespace" , "existing_view" )
2680+ rest_mock .head (
2681+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2682+ status_code = 200 ,
2683+ request_headers = TEST_HEADERS ,
2684+ )
26702685 rest_mock .post (
26712686 f"{ TEST_URI } v1/views/rename" ,
26722687 json = {
@@ -2683,3 +2698,45 @@ def test_rename_view_409(rest_mock: Mocker) -> None:
26832698 with pytest .raises (ViewAlreadyExistsError ) as exc_info :
26842699 catalog .rename_view (from_identifier , to_identifier )
26852700 assert "View already exists: some_namespace.existing_view" in str (exc_info .value )
2701+
2702+
2703+ def test_rename_view_source_namespace_does_not_exist (rest_mock : Mocker ) -> None :
2704+ from_identifier = ("non_existent_namespace" , "old_view" )
2705+ to_identifier = ("some_namespace" , "new_view" )
2706+
2707+ rest_mock .head (
2708+ f"{ TEST_URI } v1/namespaces/non_existent_namespace" ,
2709+ status_code = 404 ,
2710+ request_headers = TEST_HEADERS ,
2711+ )
2712+ rest_mock .head (
2713+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2714+ status_code = 200 ,
2715+ request_headers = TEST_HEADERS ,
2716+ )
2717+
2718+ catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
2719+ with pytest .raises (NoSuchNamespaceError ) as exc_info :
2720+ catalog .rename_view (from_identifier , to_identifier )
2721+ assert "Source namespace does not exist: ('non_existent_namespace',)" in str (exc_info .value )
2722+
2723+
2724+ def test_rename_view_destination_namespace_does_not_exist (rest_mock : Mocker ) -> None :
2725+ from_identifier = ("some_namespace" , "old_view" )
2726+ to_identifier = ("non_existent_namespace" , "new_view" )
2727+
2728+ rest_mock .head (
2729+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2730+ status_code = 200 ,
2731+ request_headers = TEST_HEADERS ,
2732+ )
2733+ rest_mock .head (
2734+ f"{ TEST_URI } v1/namespaces/non_existent_namespace" ,
2735+ status_code = 404 ,
2736+ request_headers = TEST_HEADERS ,
2737+ )
2738+
2739+ catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
2740+ with pytest .raises (NoSuchNamespaceError ) as exc_info :
2741+ catalog .rename_view (from_identifier , to_identifier )
2742+ assert "Destination namespace does not exist: non_existent_namespace" in str (exc_info .value )
0 commit comments