From c2adf56b2fb2abdc57496538880675ea1167d459 Mon Sep 17 00:00:00 2001 From: Lavius Motileng <58791731+laviusmotileng-ms@users.noreply.github.com> Date: Tue, 5 May 2020 14:28:44 -0700 Subject: [PATCH] updated header text and tests for PowerRename (#2607) --- .../PowerRenameProperties.cs | 3 + .../PowerRenameSettingsIPCMessage.cs | 29 ++++ .../SettingsUtils.cs | 2 +- .../SndPowerRenameSettings.cs | 4 + .../Strings/en-us/Resources.resw | 10 +- .../ViewModels/PowerRenameViewModel.cs | 2 +- .../Views/PowerRenamePage.xaml | 8 +- ...crosoft.PowerToys.Settings.UnitTest.csproj | 1 + .../ViewModelTests/PowerRename.cs | 156 ++++++++++++++++++ 9 files changed, 204 insertions(+), 11 deletions(-) create mode 100644 src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameSettingsIPCMessage.cs create mode 100644 src/core/Microsoft.PowerToys.Settings.UnitTest/ViewModelTests/PowerRename.cs diff --git a/src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameProperties.cs b/src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameProperties.cs index 99bc3bd1f8..dffa50d639 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameProperties.cs +++ b/src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameProperties.cs @@ -15,8 +15,11 @@ namespace Microsoft.PowerToys.Settings.UI.Lib MaxMRUSize = new IntProperty(); ShowIcon = new BoolProperty(); ExtendedContextMenuOnly = new BoolProperty(); + Enabled = new BoolProperty(); } + public BoolProperty Enabled { get; set; } + [JsonPropertyName("bool_persist_input")] public BoolProperty PersistState { get; set; } diff --git a/src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameSettingsIPCMessage.cs b/src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameSettingsIPCMessage.cs new file mode 100644 index 0000000000..9a56de6bc9 --- /dev/null +++ b/src/core/Microsoft.PowerToys.Settings.UI.Lib/PowerRenameSettingsIPCMessage.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Microsoft.PowerToys.Settings.UI.Lib +{ + public class PowerRenameSettingsIPCMessage + { + [JsonPropertyName("powertoys")] + public SndPowerRenameSettings Powertoys { get; set; } + + public PowerRenameSettingsIPCMessage() + { + + } + + public PowerRenameSettingsIPCMessage(SndPowerRenameSettings settings) + { + this.Powertoys = settings; + } + + public string ToJsonString() + { + return JsonSerializer.Serialize(this); + } + } +} diff --git a/src/core/Microsoft.PowerToys.Settings.UI.Lib/SettingsUtils.cs b/src/core/Microsoft.PowerToys.Settings.UI.Lib/SettingsUtils.cs index 210cf800f6..abc6c1cd9d 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI.Lib/SettingsUtils.cs +++ b/src/core/Microsoft.PowerToys.Settings.UI.Lib/SettingsUtils.cs @@ -81,4 +81,4 @@ namespace Microsoft.PowerToys.Settings.UI.Lib return Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); } } -} \ No newline at end of file +} diff --git a/src/core/Microsoft.PowerToys.Settings.UI.Lib/SndPowerRenameSettings.cs b/src/core/Microsoft.PowerToys.Settings.UI.Lib/SndPowerRenameSettings.cs index 75ffd5b4a1..781680f964 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI.Lib/SndPowerRenameSettings.cs +++ b/src/core/Microsoft.PowerToys.Settings.UI.Lib/SndPowerRenameSettings.cs @@ -12,6 +12,10 @@ namespace Microsoft.PowerToys.Settings.UI.Lib [JsonPropertyName("PowerRename")] public PowerRenameSettings PowerRename { get; set; } + public SndPowerRenameSettings() + { + } + public SndPowerRenameSettings(PowerRenameSettings settings) { PowerRename = settings; diff --git a/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw b/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw index 792170b70b..dcb845c56d 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw +++ b/src/core/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw @@ -369,16 +369,16 @@ Choose Settings color - Show on default context menu + Show icon on context menu - Only show on extended context menu (Shift + Right-click) + Only show the PowerRename menu item on the extended context menu (Shift + Right-click). - Maximum numbers of items to show in recently used list + Maximum numbers of items to show in recently used list for autocomplete dropdown. - Restore search, replace and flags values on launch from previous run + Restore search, replace and flags values on launch from previous run. Markdown Preview Handler @@ -396,7 +396,7 @@ Open-source notice - Enable Auto Complete + Enable autocomplete and autosuggest of recently used list for autocomplete dropdown. Zone border color (Default #FFFFFF) diff --git a/src/core/Microsoft.PowerToys.Settings.UI/ViewModels/PowerRenameViewModel.cs b/src/core/Microsoft.PowerToys.Settings.UI/ViewModels/PowerRenameViewModel.cs index a1b9078c4a..ad26928cca 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI/ViewModels/PowerRenameViewModel.cs +++ b/src/core/Microsoft.PowerToys.Settings.UI/ViewModels/PowerRenameViewModel.cs @@ -75,7 +75,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels ShellPage.DefaultSndMSGCallback(snd.ToString()); _powerRenameEnabled = value; - RaisePropertyChanged(); + OnPropertyChanged("IsEnabled"); } } } diff --git a/src/core/Microsoft.PowerToys.Settings.UI/Views/PowerRenamePage.xaml b/src/core/Microsoft.PowerToys.Settings.UI/Views/PowerRenamePage.xaml index 9d9922b3b2..edf7a04543 100644 --- a/src/core/Microsoft.PowerToys.Settings.UI/Views/PowerRenamePage.xaml +++ b/src/core/Microsoft.PowerToys.Settings.UI/Views/PowerRenamePage.xaml @@ -50,15 +50,15 @@ IsOn="{Binding Mode=TwoWay, Path=IsEnabled}" /> + + - - - + UnitTestApp.xaml + diff --git a/src/core/Microsoft.PowerToys.Settings.UnitTest/ViewModelTests/PowerRename.cs b/src/core/Microsoft.PowerToys.Settings.UnitTest/ViewModelTests/PowerRename.cs new file mode 100644 index 0000000000..8b2d97fcc0 --- /dev/null +++ b/src/core/Microsoft.PowerToys.Settings.UnitTest/ViewModelTests/PowerRename.cs @@ -0,0 +1,156 @@ +using Microsoft.PowerToys.Settings.UI.Lib; +using Microsoft.PowerToys.Settings.UI.ViewModels; +using Microsoft.PowerToys.Settings.UI.Views; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; + +namespace ViewModelTests +{ + [TestClass] + public class PowerRename + { + public const string ModuleName = "PowerRename"; + public string schemaText = null; + + [TestInitialize] + public void Setup() + { + // initialize creation of test settings file. + GeneralSettings generalSettings = new GeneralSettings(); + PowerRenameSettings powerRename = new PowerRenameSettings(); + + SettingsUtils.SaveSettings(generalSettings.ToJsonString()); + SettingsUtils.SaveSettings(powerRename.ToJsonString(), powerRename.name, "power-rename-settings.json"); + } + + [TestCleanup] + public void CleanUp() + { + // delete folder created. + string generalSettings_file_name = string.Empty; + if (SettingsUtils.SettingsFolderExists(generalSettings_file_name)) + { + DeleteFolder(generalSettings_file_name); + } + + // delete folder created. + if (SettingsUtils.SettingsFolderExists(ModuleName)) + { + DeleteFolder(ModuleName); + } + } + + [TestMethod] + public void IsEnabled_ShouldEnableModule_WhenSuccessful() + { + // arrange + PowerRenameViewModel viewModel = new PowerRenameViewModel(); + + // Assert + ShellPage.DefaultSndMSGCallback = msg => + { + OutGoingGeneralSettings snd = JsonSerializer.Deserialize(msg); + Assert.IsTrue(snd.GeneralSettings.Enabled.PowerRename); + }; + + // act + viewModel.IsEnabled = true; + } + + [TestMethod] + public void MRUEnabled_ShouldSetValue2True_WhenSuccessful() + { + // arrange + PowerRenameViewModel viewModel = new PowerRenameViewModel(); + + // Assert + ShellPage.DefaultSndMSGCallback = msg => + { + PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); + Assert.IsTrue(snd.Powertoys.PowerRename.properties.MRUEnabled.Value); + }; + + // act + viewModel.MRUEnabled = true; + } + + [TestMethod] + public void EnabledOnContextMenu_ShouldSetValue2True_WhenSuccessful() + { + // arrange + PowerRenameViewModel viewModel = new PowerRenameViewModel(); + + // Assert + ShellPage.DefaultSndMSGCallback = msg => + { + PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); + Assert.IsTrue(snd.Powertoys.PowerRename.properties.ShowIcon.Value); + }; + + // act + viewModel.EnabledOnContextMenu = true; + } + + [TestMethod] + public void EnabledOnContextExtendedMenu_ShouldSetValue2True_WhenSuccessful() + { + // arrange + PowerRenameViewModel viewModel = new PowerRenameViewModel(); + + // Assert + ShellPage.DefaultSndMSGCallback = msg => + { + PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); + Assert.IsTrue(snd.Powertoys.PowerRename.properties.ShowIcon.Value); + }; + + // act + viewModel.EnabledOnContextMenu = true; + } + + [TestMethod] + public void RestoreFlagsOnLaunch_ShouldSetValue2True_WhenSuccessful() + { + // arrange + PowerRenameViewModel viewModel = new PowerRenameViewModel(); + + // Assert + ShellPage.DefaultSndMSGCallback = msg => + { + PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); + Assert.IsTrue(snd.Powertoys.PowerRename.properties.PersistState.Value); + }; + + // act + viewModel.RestoreFlagsOnLaunch = true; + } + + [TestMethod] + public void MaxDispListNum_ShouldSetMaxSuggListTo20_WhenSuccessful() + { + // arrange + PowerRenameViewModel viewModel = new PowerRenameViewModel(); + + // Assert + ShellPage.DefaultSndMSGCallback = msg => + { + PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); + Assert.AreEqual(20,snd.Powertoys.PowerRename.properties.MaxMRUSize.Value); + }; + + // act + viewModel.MaxDispListNum = 20; + } + + public void DeleteFolder(string powertoy) + { + Directory.Delete(Path.Combine(SettingsUtils.LocalApplicationDataFolder(), $"Microsoft\\PowerToys\\{powertoy}"), true); + } + } +}