mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-06 03:07:04 +02:00
* compare config files * create settings files * updated path check * reverted color picker changes * added test files * removed settings uralted files * Modifying directory structure and adding properties for backcompat test. * Updating Unit test to use mock repositories. 1) BackCompatTestProperties exposes mock repository implementation because SettingsRepository is a singleton, and settings utils isn't typed. 2) BackCompatTestProperties, encapsulates logic to verify that the correct file was read from. 3) Validating each file is read twice. Once by the original file, and once via the view model. * Adding 18.2 settings files. * Fix compiler errors from latest merge * Adding v0.19.2 test files. * Adding in 0.20.1 settings. Removing 0.20.2 (as this was a dev build number) * Adding settings tests for 22.1 * General Settings should update version when they don't match * Adding v0.22.0 files * Removing not settings related files from TestData for PT Run 21.1 * Referencing module name as *Settings.ModuleName in tests. Except for ImageResizer * Using ImageResizerSettings to use Settings for the module name. * Setting AllPlugins to empty list in case PluginManager.Save/Load/ReloadData is called before plugins are loaded * Fixing fxcop errors * using named parameters as per review feedback Co-authored-by: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com>
225 lines
10 KiB
C#
225 lines
10 KiB
C#
// 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.BackwardsCompatibility;
|
|
using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using Moq;
|
|
|
|
namespace ViewModelTests
|
|
{
|
|
[TestClass]
|
|
public class PowerRename
|
|
{
|
|
public const string generalSettingsFileName = "Test\\PowerRename";
|
|
|
|
private Mock<ISettingsUtils> mockGeneralSettingsUtils;
|
|
|
|
private Mock<ISettingsUtils> mockPowerRenamePropertiesUtils;
|
|
|
|
[TestInitialize]
|
|
public void SetUpStubSettingUtils()
|
|
{
|
|
mockGeneralSettingsUtils = ISettingsUtilsMocks.GetStubSettingsUtils<GeneralSettings>();
|
|
mockPowerRenamePropertiesUtils = ISettingsUtilsMocks.GetStubSettingsUtils<PowerRenameLocalProperties>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Test if the original settings files were modified.
|
|
/// </summary>
|
|
[TestMethod]
|
|
[DataRow("v0.18.2", "power-rename-settings.json")]
|
|
[DataRow("v0.19.2", "power-rename-settings.json")]
|
|
[DataRow("v0.20.1", "power-rename-settings.json")]
|
|
[DataRow("v0.22.0", "power-rename-settings.json")]
|
|
public void OriginalFilesModificationTest(string version, string fileName)
|
|
{
|
|
var mockIOProvider = BackCompatTestProperties.GetModuleIOProvider(version, PowerRenameSettings.ModuleName, fileName);
|
|
var mockSettingsUtils = new SettingsUtils(mockIOProvider.Object);
|
|
PowerRenameLocalProperties originalSettings = mockSettingsUtils.GetSettings<PowerRenameLocalProperties>(PowerRenameSettings.ModuleName);
|
|
|
|
var mockGeneralIOProvider = BackCompatTestProperties.GetGeneralSettingsIOProvider(version);
|
|
var mockGeneralSettingsUtils = new SettingsUtils(mockGeneralIOProvider.Object);
|
|
GeneralSettings originalGeneralSettings = mockGeneralSettingsUtils.GetSettings<GeneralSettings>();
|
|
var generalSettingsRepository = new BackCompatTestProperties.MockSettingsRepository<GeneralSettings>(mockGeneralSettingsUtils);
|
|
|
|
// Initialise View Model with test Config files
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockSettingsUtils, generalSettingsRepository, SendMockIPCConfigMSG);
|
|
|
|
// Verifiy that the old settings persisted
|
|
Assert.AreEqual(originalGeneralSettings.Enabled.PowerRename, viewModel.IsEnabled);
|
|
Assert.AreEqual(originalSettings.ExtendedContextMenuOnly, viewModel.EnabledOnContextExtendedMenu);
|
|
Assert.AreEqual(originalSettings.MRUEnabled, viewModel.MRUEnabled);
|
|
Assert.AreEqual(originalSettings.ShowIcon, viewModel.EnabledOnContextMenu);
|
|
|
|
//Verify that the stub file was used
|
|
var expectedCallCount = 2; //once via the view model, and once by the test (GetSettings<T>)
|
|
BackCompatTestProperties.VerifyModuleIOProviderWasRead(mockIOProvider, PowerRenameSettings.ModuleName, expectedCallCount);
|
|
BackCompatTestProperties.VerifyGeneralSettingsIOProviderWasRead(mockGeneralIOProvider, expectedCallCount);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void IsEnabledShouldEnableModuleWhenSuccessful()
|
|
{
|
|
// Assert
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
{
|
|
OutGoingGeneralSettings snd = JsonSerializer.Deserialize<OutGoingGeneralSettings>(msg);
|
|
Assert.IsTrue(snd.GeneralSettings.Enabled.PowerRename);
|
|
return 0;
|
|
};
|
|
|
|
// arrange
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
// act
|
|
viewModel.IsEnabled = true;
|
|
}
|
|
|
|
[TestMethod]
|
|
public void MRUEnabledShouldSetValue2TrueWhenSuccessful()
|
|
{
|
|
// Assert
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
{
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.MRUEnabled.Value);
|
|
return 0;
|
|
};
|
|
|
|
// arrange
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
// act
|
|
viewModel.MRUEnabled = true;
|
|
}
|
|
|
|
[TestMethod]
|
|
public void WhenIsEnabledIsOffAndMRUEnabledIsOffGlobalAndMruShouldBeOff()
|
|
{
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
viewModel.IsEnabled = false;
|
|
viewModel.MRUEnabled = false;
|
|
|
|
Assert.IsFalse(viewModel.GlobalAndMruEnabled);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void WhenIsEnabledIsOffAndMRUEnabledIsOnGlobalAndMruShouldBeOff()
|
|
{
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
viewModel.IsEnabled = false;
|
|
viewModel.MRUEnabled = true;
|
|
|
|
Assert.IsFalse(viewModel.GlobalAndMruEnabled);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void WhenIsEnabledIsOnAndMRUEnabledIsOffGlobalAndMruShouldBeOff()
|
|
{
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
viewModel.IsEnabled = true;
|
|
viewModel.MRUEnabled = false;
|
|
|
|
Assert.IsFalse(viewModel.GlobalAndMruEnabled);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void WhenIsEnabledIsOnAndMRUEnabledIsOnGlobalAndMruShouldBeOn()
|
|
{
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
viewModel.IsEnabled = true;
|
|
viewModel.MRUEnabled = true;
|
|
|
|
Assert.IsTrue(viewModel.GlobalAndMruEnabled);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void EnabledOnContextMenuShouldSetValue2TrueWhenSuccessful()
|
|
{
|
|
// Assert
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
{
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.ShowIcon.Value);
|
|
return 0;
|
|
};
|
|
|
|
// arrange
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
// act
|
|
viewModel.EnabledOnContextMenu = true;
|
|
}
|
|
|
|
[TestMethod]
|
|
public void EnabledOnContextExtendedMenuShouldSetValue2TrueWhenSuccessful()
|
|
{
|
|
// Assert
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
{
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.ShowIcon.Value);
|
|
return 0;
|
|
};
|
|
|
|
// arrange
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
// act
|
|
viewModel.EnabledOnContextMenu = true;
|
|
}
|
|
|
|
[TestMethod]
|
|
public void RestoreFlagsOnLaunchShouldSetValue2TrueWhenSuccessful()
|
|
{
|
|
// Assert
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
{
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.PersistState.Value);
|
|
return 0;
|
|
};
|
|
|
|
// arrange
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
// act
|
|
viewModel.RestoreFlagsOnLaunch = true;
|
|
}
|
|
|
|
[TestMethod]
|
|
public void MaxDispListNumShouldSetMaxSuggListTo20WhenSuccessful()
|
|
{
|
|
// Assert
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
{
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
Assert.AreEqual(20, snd.Powertoys.PowerRename.Properties.MaxMRUSize.Value);
|
|
return 0;
|
|
};
|
|
|
|
// arrange
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettingsFileName);
|
|
|
|
// act
|
|
viewModel.MaxDispListNum = 20;
|
|
}
|
|
}
|
|
}
|