@@ -2659,6 +2659,11 @@ def test_load_table_without_storage_credentials(
26592659def test_rename_view_204 (rest_mock : Mocker ) -> None :
26602660 from_identifier = ("some_namespace" , "old_view" )
26612661 to_identifier = ("some_namespace" , "new_view" )
2662+ rest_mock .head (
2663+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2664+ status_code = 200 ,
2665+ request_headers = TEST_HEADERS ,
2666+ )
26622667 rest_mock .post (
26632668 f"{ TEST_URI } v1/views/rename" ,
26642669 json = {
@@ -2672,13 +2677,18 @@ def test_rename_view_204(rest_mock: Mocker) -> None:
26722677 catalog .rename_view (from_identifier , to_identifier )
26732678 assert (
26742679 rest_mock .last_request .text
2675- == """ {"source": {"namespace": ["some_namespace"], "name": "old_view"}, "destination": {"namespace": ["some_namespace"], "name": "new_view"}}"""
2680+ == ''' {"source": {"namespace": ["some_namespace"], "name": "old_view"}, "destination": {"namespace": ["some_namespace"], "name": "new_view"}}'''
26762681 )
26772682
26782683
26792684def test_rename_view_404 (rest_mock : Mocker ) -> None :
26802685 from_identifier = ("some_namespace" , "non_existent_view" )
26812686 to_identifier = ("some_namespace" , "new_view" )
2687+ rest_mock .head (
2688+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2689+ status_code = 200 ,
2690+ request_headers = TEST_HEADERS ,
2691+ )
26822692 rest_mock .post (
26832693 f"{ TEST_URI } v1/views/rename" ,
26842694 json = {
@@ -2700,6 +2710,11 @@ def test_rename_view_404(rest_mock: Mocker) -> None:
27002710def test_rename_view_409 (rest_mock : Mocker ) -> None :
27012711 from_identifier = ("some_namespace" , "old_view" )
27022712 to_identifier = ("some_namespace" , "existing_view" )
2713+ rest_mock .head (
2714+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2715+ status_code = 200 ,
2716+ request_headers = TEST_HEADERS ,
2717+ )
27032718 rest_mock .post (
27042719 f"{ TEST_URI } v1/views/rename" ,
27052720 json = {
@@ -2716,3 +2731,45 @@ def test_rename_view_409(rest_mock: Mocker) -> None:
27162731 with pytest .raises (ViewAlreadyExistsError ) as exc_info :
27172732 catalog .rename_view (from_identifier , to_identifier )
27182733 assert "View already exists: some_namespace.existing_view" in str (exc_info .value )
2734+
2735+
2736+ def test_rename_view_source_namespace_does_not_exist (rest_mock : Mocker ) -> None :
2737+ from_identifier = ("non_existent_namespace" , "old_view" )
2738+ to_identifier = ("some_namespace" , "new_view" )
2739+
2740+ rest_mock .head (
2741+ f"{ TEST_URI } v1/namespaces/non_existent_namespace" ,
2742+ status_code = 404 ,
2743+ request_headers = TEST_HEADERS ,
2744+ )
2745+ rest_mock .head (
2746+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2747+ status_code = 200 ,
2748+ request_headers = TEST_HEADERS ,
2749+ )
2750+
2751+ catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
2752+ with pytest .raises (NoSuchNamespaceError ) as exc_info :
2753+ catalog .rename_view (from_identifier , to_identifier )
2754+ assert "Source namespace does not exist: ('non_existent_namespace',)" in str (exc_info .value )
2755+
2756+
2757+ def test_rename_view_destination_namespace_does_not_exist (rest_mock : Mocker ) -> None :
2758+ from_identifier = ("some_namespace" , "old_view" )
2759+ to_identifier = ("non_existent_namespace" , "new_view" )
2760+
2761+ rest_mock .head (
2762+ f"{ TEST_URI } v1/namespaces/some_namespace" ,
2763+ status_code = 200 ,
2764+ request_headers = TEST_HEADERS ,
2765+ )
2766+ rest_mock .head (
2767+ f"{ TEST_URI } v1/namespaces/non_existent_namespace" ,
2768+ status_code = 404 ,
2769+ request_headers = TEST_HEADERS ,
2770+ )
2771+
2772+ catalog = RestCatalog ("rest" , uri = TEST_URI , token = TEST_TOKEN )
2773+ with pytest .raises (NoSuchNamespaceError ) as exc_info :
2774+ catalog .rename_view (from_identifier , to_identifier )
2775+ assert "Destination namespace does not exist: non_existent_namespace" in str (exc_info .value )
0 commit comments