public void RemoveProfileTest() { var project = CreateTestProject(); var context = new ProfileOptionsWindowContext(project, null, null); // a crude emulation of WPF control behavior when removing selected profile context.DirtyProfiles.CollectionChanged += (s, e) => { if (e.Action == NotifyCollectionChangedAction.Remove && e.OldItems[0] == context.SelectedProfile) { context.SelectedProfile = null; } }; context.SelectedProfile = GetDirtyProfile(context, "kana"); context.RemoveSelectedProfile(); Assert.Single(context.DirtyProfiles); Assert.Null(context.SelectedProfile); Assert.Null(context.SelectedPage); Assert.Empty(context.Pages); context.SaveChanges(); Assert.Equal(1, project.Options.Profiles.Count); // Switches to the first existing profile Assert.Equal("asa", project.Options.ActiveProfile); context.SelectedProfile = GetDirtyProfile(context, "asa"); context.RemoveSelectedProfile(); Assert.Empty(context.DirtyProfiles); Assert.Null(context.SelectedProfile); Assert.Null(context.SelectedPage); Assert.Empty(context.Pages); context.SaveChanges(); Assert.Null(project.Options.Profile); Assert.False(project.Options.HasProfiles); // Does not fail when there are no profiles context.RemoveSelectedProfile(); }
public void ImportExportTest() { var project = CreateTestProject(); var context = new ProfileOptionsWindowContext(project, null, null); var tmpFile = Path.GetTempFileName(); context.ExportProfiles(tmpFile); context.SelectedProfile = GetDirtyProfile(context, "kana"); context.RemoveSelectedProfile(); context.SelectedProfile = GetDirtyProfile(context, "asa"); context.RemoveSelectedProfile(); Assert.Empty(context.ProfileNames); context.ImportProfiles(tmpFile); File.Delete(tmpFile); Assert.Collection(context.ProfileNames, fst => Assert.Equal("kana", fst), snd => Assert.Equal("asa", snd)); }
public void ImportNameConflictTest() { var project = CreateTestProject(); var nameResolver = new Mock <ProfileOptionsWindowContext.AskProfileNameDelegate>(MockBehavior.Strict); var context = new ProfileOptionsWindowContext(project, null, nameResolver.Object); var tmpFile = Path.GetTempFileName(); context.ExportProfiles(tmpFile); context.SelectedProfile = GetDirtyProfile(context, "kana"); context.RemoveSelectedProfile(); Assert.Single(context.ProfileNames, "asa"); nameResolver.Setup(n => n("Import", "Profile asa already exists. Enter a new name or leave it as is to overwrite the profile:", It.IsAny <IEnumerable <string> >(), "asa")) .Returns("mizu").Verifiable(); context.ImportProfiles(tmpFile); File.Delete(tmpFile); nameResolver.Verify(); Assert.Collection(context.ProfileNames, fst => Assert.Equal("asa", fst), snd => Assert.Equal("kana", snd), trd => Assert.Equal("mizu", trd)); }