public async Task WhenDuplicatingAProfile_AndNameAndCommandAreProvided_TheNameAndCommandAreUsed() { var project = UnconfiguredProjectFactory.Create(); ILaunchProfile?duplicatedProfile = null; var profiles = new List <ILaunchProfile> { new WritableLaunchProfile { Name = "Alpha", CommandName = "Beta", ExecutablePath = @"C:\iguana\aardvark.exe" }.ToLaunchProfile() }; var launchSettingsProvider = ILaunchSettingsProviderFactory.Create( launchProfiles: profiles, addOrUpdateProfileCallback: (profile, addToFront) => { profiles.Add(profile); duplicatedProfile = profile; }, getProfilesCallback: (p) => ImmutableList.CreateRange(profiles)); var queryVersionProvider = new LaunchSettingsQueryVersionProvider(); var tracker = new LaunchSettingsTracker(project, launchSettingsProvider, queryVersionProvider); var handler = new ProjectLaunchProfileHandler(project, launchSettingsProvider, tracker); var context = IQueryExecutionContextFactory.Create(); var parent = IEntityWithIdFactory.Create("Project", "MyProject"); var duplicatedProfileId = await handler.DuplicateLaunchProfileAsync(context, parent, currentProfileName : "Alpha", newProfileName : "Gamma", newProfileCommandName : "Delta"); Assert.Equal(expected: "Gamma", actual: duplicatedProfile !.Name); Assert.Equal(expected: "Delta", actual: duplicatedProfile !.CommandName); Assert.Equal(expected: @"C:\iguana\aardvark.exe", actual: duplicatedProfile !.ExecutablePath); Assert.Equal(expected: 2, actual: profiles.Count); Assert.NotNull(duplicatedProfileId); Assert.Equal(expected: "LaunchProfile", actual: duplicatedProfileId[ProjectModelIdentityKeys.SourceItemType]); Assert.Equal(expected: duplicatedProfile.Name, actual: duplicatedProfileId[ProjectModelIdentityKeys.SourceItemName]); }
public async Task WhenAddingANewProfile_AndAProfileNameIsProvided_TheProvidedNameIsUsed() { var project = UnconfiguredProjectFactory.Create(); ILaunchProfile?newProfile = null; var profiles = new List <ILaunchProfile>(); var launchSettingsProvider = ILaunchSettingsProviderFactory.Create( addOrUpdateProfileCallback: (profile, addToFront) => { profiles.Add(profile); newProfile = profile; }, getProfilesCallback: (p) => ImmutableList.CreateRange(profiles)); var queryVersionProvider = new LaunchSettingsQueryVersionProvider(); var tracker = new LaunchSettingsTracker(project, launchSettingsProvider, queryVersionProvider); var handler = new ProjectLaunchProfileHandler(project, launchSettingsProvider, tracker); var context = IQueryExecutionContextFactory.Create(); var parent = IEntityWithIdFactory.Create("Project", "MyProject"); var newProfileId = await handler.AddLaunchProfileAsync(context, parent, commandName : "Alpha", newProfileName : "Beta"); Assert.NotNull(newProfile); Assert.Equal(expected: "Beta", actual: newProfile.Name); Assert.Equal(expected: "Alpha", actual: newProfile.CommandName); Assert.Single(profiles); Assert.NotNull(newProfileId); Assert.Equal(expected: "LaunchProfile", actual: newProfileId[ProjectModelIdentityKeys.SourceItemType]); Assert.Equal(expected: "Beta", actual: newProfileId[ProjectModelIdentityKeys.SourceItemName]); }
public async Task WhenRenamingAProfile_TheOldProfileIsRemovedAndTheNewProfileIsAdded() { var project = UnconfiguredProjectFactory.Create(); ILaunchProfile?addedProfile = null; string? removedProfileName = null; var profiles = new List <ILaunchProfile> { new WritableLaunchProfile { Name = "Alpha", CommandName = "Beta", ExecutablePath = @"C:\iguana\aardvark.exe" }.ToLaunchProfile() }; var launchSettingsProvider = ILaunchSettingsProviderFactory.Create( launchProfiles: profiles, addOrUpdateProfileCallback: (profile, addToFront) => { profiles.Add(profile); addedProfile = profile; }, removeProfileCallback: (profileName) => { removedProfileName = profileName; profiles.RemoveAll(p => p.Name == profileName); }, getProfilesCallback: (p) => ImmutableList.CreateRange(profiles)); var queryVersionProvider = new LaunchSettingsQueryVersionProvider(); var tracker = new LaunchSettingsTracker(project, launchSettingsProvider, queryVersionProvider); var handler = new ProjectLaunchProfileHandler(project, launchSettingsProvider, tracker); var context = IQueryExecutionContextFactory.Create(); var parent = IEntityWithIdFactory.Create("Project", "MyProject"); var changes = await handler.RenameLaunchProfileAsync(context, parent, currentProfileName : "Alpha", newProfileName : "Gamma"); Assert.True(changes.HasValue); (EntityIdentity removedProfileId, EntityIdentity addedProfileId) = changes.Value; Assert.Equal(expected: "Gamma", actual: addedProfile !.Name); Assert.Equal(expected: "Beta", actual: addedProfile !.CommandName); Assert.Equal(expected: @"C:\iguana\aardvark.exe", actual: addedProfile !.ExecutablePath); Assert.Single(profiles); Assert.Equal(expected: "LaunchProfile", actual: removedProfileId ![ProjectModelIdentityKeys.SourceItemType]);