@@ -2169,6 +2169,56 @@ def test_project_metadata(mc):
21692169 assert mp .version () == "v0"
21702170
21712171
2172+ def test_project_rename (mc : MerginClient ):
2173+ """Check project can be renamed"""
2174+
2175+ test_project = "test_project_rename"
2176+ test_project_renamed = "test_project_renamed"
2177+ project = API_USER + "/" + test_project
2178+ project_renamed = API_USER + "/" + test_project_renamed
2179+
2180+ project_dir = os .path .join (TMP_DIR , test_project ) # primary project dir
2181+
2182+ cleanup (mc , project , [project_dir ])
2183+ cleanup (mc , project_renamed , [])
2184+
2185+ shutil .copytree (TEST_DATA_DIR , project_dir )
2186+ mc .create_project_and_push (project , project_dir )
2187+
2188+ # renamed project does not exist
2189+ with pytest .raises (ClientError , match = "The requested URL was not found on the server" ):
2190+ info = mc .project_info (project_renamed )
2191+
2192+ # rename
2193+ mc .rename_project (project , test_project_renamed )
2194+
2195+ # validate project info
2196+ project_info = mc .project_info (project_renamed )
2197+ assert project_info ["version" ] == "v1"
2198+ assert project_info ["name" ] == test_project_renamed
2199+ assert project_info ["namespace" ] == API_USER
2200+ with pytest .raises (ClientError , match = "The requested URL was not found on the server" ):
2201+ mc .project_info (project )
2202+
2203+ # recreate project
2204+ cleanup (mc , project , [project_dir ])
2205+ shutil .copytree (TEST_DATA_DIR , project_dir )
2206+ mc .create_project_and_push (project , project_dir )
2207+
2208+ # rename to existing name - created previously
2209+ mc .project_info (project_renamed )
2210+ with pytest .raises (ClientError , match = "Name already exist within workspace" ):
2211+ mc .rename_project (project , test_project_renamed )
2212+
2213+ # cannot rename project that does not exist
2214+ with pytest .raises (ClientError , match = "The requested URL was not found on the server." ):
2215+ mc .rename_project (API_USER + "/" + "non_existing_project" , "new_project" )
2216+
2217+ # cannot rename with full project name
2218+ with pytest .raises (ClientError , match = "Project's new name should be without workspace specification" ):
2219+ mc .rename_project (project , "workspace" + "/" + test_project_renamed )
2220+
2221+
21722222def test_download_files (mc : MerginClient ):
21732223 """Test downloading files at specified versions."""
21742224 test_project = "test_download_files"
0 commit comments