// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.IO; using System.Text.Json; using Microsoft.PowerToys.Settings.UI.Lib; using Microsoft.PowerToys.Settings.UI.Lib.ViewModels; using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; namespace ViewModelTests { [TestClass] public class PowerRename { public const string ModuleName = "PowerRename"; public const string generalSettings_file_name = "Test\\PowerRename"; [TestMethod] public void IsEnabled_ShouldEnableModule_WhenSuccessful() { // Assert Func SendMockIPCConfigMSG = msg => { OutGoingGeneralSettings snd = JsonSerializer.Deserialize(msg); Assert.IsTrue(snd.GeneralSettings.Enabled.PowerRename); return 0; }; // arrange PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); // act viewModel.IsEnabled = true; } [TestMethod] public void MRUEnabled_ShouldSetValue2True_WhenSuccessful() { // Assert Func SendMockIPCConfigMSG = msg => { PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); Assert.IsTrue(snd.Powertoys.PowerRename.Properties.MRUEnabled.Value); return 0; }; // arrange PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); // act viewModel.MRUEnabled = true; } [TestMethod] public void WhenIsEnabledIsOffAndMRUEnabledIsOffGlobalAndMruShouldBeOff() { Func SendMockIPCConfigMSG = msg => { return 0; }; PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); viewModel.IsEnabled = false; viewModel.MRUEnabled = false; Assert.IsFalse(viewModel.GlobalAndMruEnabled); } [TestMethod] public void WhenIsEnabledIsOffAndMRUEnabledIsOnGlobalAndMruShouldBeOff() { Func SendMockIPCConfigMSG = msg => { return 0; }; PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); viewModel.IsEnabled = false; viewModel.MRUEnabled = true; Assert.IsFalse(viewModel.GlobalAndMruEnabled); } [TestMethod] public void WhenIsEnabledIsOnAndMRUEnabledIsOffGlobalAndMruShouldBeOff() { Func SendMockIPCConfigMSG = msg => { return 0; }; PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); viewModel.IsEnabled = true; viewModel.MRUEnabled = false; Assert.IsFalse(viewModel.GlobalAndMruEnabled); } [TestMethod] public void WhenIsEnabledIsOnAndMRUEnabledIsOnGlobalAndMruShouldBeOn() { Func SendMockIPCConfigMSG = msg => { return 0; }; PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); viewModel.IsEnabled = true; viewModel.MRUEnabled = true; Assert.IsTrue(viewModel.GlobalAndMruEnabled); } [TestMethod] public void EnabledOnContextMenu_ShouldSetValue2True_WhenSuccessful() { // Assert Func SendMockIPCConfigMSG = msg => { PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); Assert.IsTrue(snd.Powertoys.PowerRename.Properties.ShowIcon.Value); return 0; }; // arrange PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); // act viewModel.EnabledOnContextMenu = true; } [TestMethod] public void EnabledOnContextExtendedMenu_ShouldSetValue2True_WhenSuccessful() { // Assert Func SendMockIPCConfigMSG = msg => { PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); Assert.IsTrue(snd.Powertoys.PowerRename.Properties.ShowIcon.Value); return 0; }; // arrange PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); // act viewModel.EnabledOnContextMenu = true; } [TestMethod] public void RestoreFlagsOnLaunch_ShouldSetValue2True_WhenSuccessful() { // Assert Func SendMockIPCConfigMSG = msg => { PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); Assert.IsTrue(snd.Powertoys.PowerRename.Properties.PersistState.Value); return 0; }; // arrange PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); // act viewModel.RestoreFlagsOnLaunch = true; } [TestMethod] public void MaxDispListNum_ShouldSetMaxSuggListTo20_WhenSuccessful() { // Assert Func SendMockIPCConfigMSG = msg => { PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize(msg); Assert.AreEqual(20, snd.Powertoys.PowerRename.Properties.MaxMRUSize.Value); return 0; }; // arrange PowerRenameViewModel viewModel = new PowerRenameViewModel(ISettingsUtilsMocks.GetStubSettingsUtils().Object, SendMockIPCConfigMSG, generalSettings_file_name); // act viewModel.MaxDispListNum = 20; } } }