public SettingAppViewModel(SettingAppModel setting) { this.setting = setting; this.AvailableLanguages = CreateAvailableLanguages(); this.SelectedLanguage = CreateAppLanguageRp(); AddIgnoreExtensionsCommand = model.IsIdleUI .ToReactiveCommand() .WithSubscribe(() => setting.AddIgnoreExtensions()) .AddTo(this.CompositeDisposable); ClearIgnoreExtensionsCommand = new[] { model.IsIdleUI, setting.IgnoreExtensions.ObserveIsAny(), } .CombineLatestValuesAreAllTrue() .ToAsyncReactiveCommand() .WithSubscribe(() => model.ExcuteAfterConfirm(() => setting.IgnoreExtensions.Clear())) .AddTo(this.CompositeDisposable); AddDeleteTextsCommand = model.IsIdleUI .ToReactiveCommand() .WithSubscribe(() => setting.AddDeleteTexts()) .AddTo(this.CompositeDisposable); ClearDeleteTextsCommand = new[] { model.IsIdleUI, setting.DeleteTexts.ObserveIsAny(), } .CombineLatestValuesAreAllTrue() .ToAsyncReactiveCommand() .WithSubscribe(() => model.ExcuteAfterConfirm(() => setting.DeleteTexts.Clear())) .AddTo(this.CompositeDisposable); AddReplaceTextsCommand = model.IsIdleUI .ToReactiveCommand() .WithSubscribe(() => setting.AddReplaceTexts()) .AddTo(this.CompositeDisposable); ClearReplaceTextsCommand = new[] { model.IsIdleUI, setting.ReplaceTexts.ObserveIsAny(), } .CombineLatestValuesAreAllTrue() .ToAsyncReactiveCommand() .WithSubscribe(() => model.ExcuteAfterConfirm(() => setting.ReplaceTexts.Clear())) .AddTo(this.CompositeDisposable); ResetSettingCommand = model.IsIdleUI .ToReactiveCommand() .WithSubscribe(() => model.ResetSetting()) .AddTo(this.CompositeDisposable); }
public void OtherProperties() { var model = new MainModel(new MockFileSystem(), Scheduler.Immediate); var settingVM = new SettingAppViewModel(model); model.Initialize(); var defaultSetting = new SettingAppModel(); //ステージ1 変更前 settingVM.IsSearchSubDirectories.Value .Should().Be(defaultSetting.IsSearchSubDirectories, "デフォルト設定と同じはず"); settingVM.IsDirectoryRenameTarget.Value .Should().Be(defaultSetting.IsDirectoryRenameTarget, "デフォルト設定と同じはず"); settingVM.IsFileRenameTarget.Value .Should().Be(defaultSetting.IsFileRenameTarget, "デフォルト設定と同じはず"); settingVM.IsHiddenRenameTarget.Value .Should().Be(defaultSetting.IsHiddenRenameTarget, "デフォルト設定と同じはず"); settingVM.IsRenameExt.Value .Should().Be(defaultSetting.IsRenameExt, "デフォルト設定と同じはず"); settingVM.AvailableLanguages .Should().BeEquivalentTo(SettingAppModel.AvailableLanguages, "Modelの静的プロパティと同じはず"); settingVM.AvailableLanguages.Select(x => x.Name) .Should().BeEquivalentTo( new[] { string.Empty, "de", "en", "ja", "ru", "zh" }, becauseArgs: "6個の言語があるはず"); settingVM.SelectedLanguage.Value.Name .Should().Be(defaultSetting.AppLanguageCode, "デフォルト設定と同じはず"); settingVM.IsAppDarkTheme.Value .Should().Be(defaultSetting.IsAppDarkTheme, "デフォルト設定と同じはず"); settingVM.IsCreateRenameLog.Value .Should().Be(defaultSetting.IsCreateRenameLog, "デフォルト設定と同じはず"); //ステージ2 変更後 settingVM.IsSearchSubDirectories.Value ^= true; settingVM.IsDirectoryRenameTarget.Value ^= true; settingVM.IsFileRenameTarget.Value ^= true; settingVM.IsHiddenRenameTarget.Value ^= true; settingVM.IsRenameExt.Value ^= true; settingVM.IsAppDarkTheme.Value ^= true; settingVM.IsCreateRenameLog.Value ^= true; settingVM.SelectedLanguage.Value = settingVM.AvailableLanguages.First(x => x.Name.Contains("ja")); settingVM.IsSearchSubDirectories.Value .Should().Be(!defaultSetting.IsSearchSubDirectories, "デフォルト設定と違うはず"); model.Setting.IsSearchSubDirectories .Should().Be(settingVM.IsSearchSubDirectories.Value, "VMとModelの値は同じはず"); settingVM.IsDirectoryRenameTarget.Value .Should().Be(!defaultSetting.IsDirectoryRenameTarget, "デフォルト設定と違うはず"); model.Setting.IsDirectoryRenameTarget .Should().Be(settingVM.IsDirectoryRenameTarget.Value, "VMとModelの値は同じはず"); settingVM.IsFileRenameTarget.Value .Should().Be(!defaultSetting.IsFileRenameTarget, "デフォルト設定と違うはず"); model.Setting.IsFileRenameTarget .Should().Be(settingVM.IsFileRenameTarget.Value, "VMとModelの値は同じはず"); settingVM.IsHiddenRenameTarget.Value .Should().Be(!defaultSetting.IsHiddenRenameTarget, "デフォルト設定と違うはず"); model.Setting.IsHiddenRenameTarget .Should().Be(settingVM.IsHiddenRenameTarget.Value, "VMとModelの値は同じはず"); settingVM.IsRenameExt.Value .Should().Be(!defaultSetting.IsRenameExt, "デフォルト設定と違うはず"); model.Setting.IsRenameExt .Should().Be(settingVM.IsRenameExt.Value, "VMとModelの値は同じはず"); settingVM.IsAppDarkTheme.Value .Should().Be(!defaultSetting.IsAppDarkTheme, "デフォルト設定と違うはず"); model.Setting.IsAppDarkTheme .Should().Be(settingVM.IsAppDarkTheme.Value, "VMとModelの値は同じはず"); settingVM.SelectedLanguage.Value.Name .Should().NotBe(defaultSetting.AppLanguageCode, "デフォルト設定と違うはず"); model.Setting.AppLanguageCode .Should().Be(settingVM.SelectedLanguage.Value.Name, "VMとModelの値は同じはず"); settingVM.IsCreateRenameLog.Value .Should().Be(!defaultSetting.IsCreateRenameLog, "デフォルト設定と違うはず"); model.Setting.IsCreateRenameLog .Should().Be(settingVM.IsCreateRenameLog.Value, "VMとModelの値は同じはず"); }