@@ -153,6 +153,38 @@ public async Task Repository_Name_Replaces_Last_Part_Of_Non_Base_Path()
153153 Assert . That ( target . Path , Is . EqualTo ( $ "d:\\ efault\\ { owner } \\ repo") ) ;
154154 }
155155
156+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ base\\ owner1\\ repo1" , "owner2/repo2" , "c:\\ base\\ owner2\\ repo2" ,
157+ Description = "Path unchanged" ) ]
158+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ base\\ owner1\\ changed" , "owner2/repo2" , "c:\\ base\\ owner2\\ repo2" ,
159+ Description = "Repo name changed" ) ]
160+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ base\\ owner1" , "owner2/repo2" , "c:\\ base\\ owner2\\ repo2" ,
161+ Description = "Repo name deleted" ) ]
162+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ base" , "owner2/repo2" , "c:\\ base\\ owner2\\ repo2" ,
163+ Description = "Base path reverted" ) ]
164+
165+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ new\\ base\\ owner1\\ changed" , "owner2/repo2" , "c:\\ new\\ base\\ owner2\\ repo2" ,
166+ Description = "Base path and repo name changed" ) ]
167+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ new\\ base\\ owner1" , "owner2/repo2" , "c:\\ new\\ base\\ owner2\\ repo2" ,
168+ Description = "Base path changed and repo name deleted" ) ]
169+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ new\\ base" , "owner2/repo2" , "c:\\ new\\ base\\ owner2\\ repo2" ,
170+ Description = "Base path changed and repo owner/name deleted" ) ]
171+
172+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "" , "owner2/repo2" , "owner2\\ repo2" ,
173+ Description = "Base path cleared" ) ]
174+ [ TestCase ( "c:\\ base" , "owner1/repo1" , "c:\\ base\\ repo1" , "owner2/repo2" , "c:\\ base\\ repo1\\ owner2\\ repo2" ,
175+ Description = "Owner deleted looks like base path change" ) ]
176+ public async Task User_Edits_Path ( string basePath , string repo1 , string userPath , string repo2 , string expectPath )
177+ {
178+ var target = CreateTarget ( ) ;
179+
180+ target . Path = basePath ;
181+ SetRepository ( target . GitHubTab , CreateRepositoryModel ( repo1 ) ) ;
182+ target . Path = userPath ;
183+ SetRepository ( target . GitHubTab , CreateRepositoryModel ( repo2 ) ) ;
184+
185+ Assert . That ( target . Path , Is . EqualTo ( expectPath ) ) ;
186+ }
187+
156188 [ Test ]
157189 public async Task Clone_Is_Initially_Disabled ( )
158190 {
@@ -257,7 +289,14 @@ static RepositoryCloneViewModel CreateTarget(
257289 urlTab ) ;
258290 }
259291
260- static IRepositoryModel CreateRepositoryModel ( string owner = "owner" , string name = "repo" )
292+ static IRepositoryModel CreateRepositoryModel ( string repo = "owner/repo" )
293+ {
294+ var split = repo . Split ( '/' ) ;
295+ var ( owner , name ) = ( split [ 0 ] , split [ 1 ] ) ;
296+ return CreateRepositoryModel ( owner , name ) ;
297+ }
298+
299+ static IRepositoryModel CreateRepositoryModel ( string owner , string name )
261300 {
262301 var repository = Substitute . For < IRepositoryModel > ( ) ;
263302 repository . Owner . Returns ( owner ) ;
0 commit comments