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);
+ }
+ }
+}