2020-08-14 14:26:41 -07:00
|
|
|
|
// 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;
|
2020-09-21 10:14:44 -07:00
|
|
|
|
using Microsoft.PowerToys.Settings.UI.UnitTests.Mocks;
|
2020-08-14 14:26:41 -07:00
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
2020-09-21 10:14:44 -07:00
|
|
|
|
using Moq;
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
namespace ViewModelTests
|
|
|
|
|
|
{
|
|
|
|
|
|
[TestClass]
|
|
|
|
|
|
public class PowerRename
|
|
|
|
|
|
{
|
2020-09-23 13:20:32 -07:00
|
|
|
|
public const string ModuleName = PowerRenameSettings.ModuleName;
|
2020-08-14 14:26:41 -07:00
|
|
|
|
public const string generalSettings_file_name = "Test\\PowerRename";
|
|
|
|
|
|
|
2020-09-23 13:20:32 -07:00
|
|
|
|
private Mock<ISettingsUtils> mockGeneralSettingsUtils;
|
|
|
|
|
|
|
|
|
|
|
|
private Mock<ISettingsUtils> mockPowerRenamePropertiesUtils;
|
|
|
|
|
|
|
|
|
|
|
|
[TestInitialize]
|
|
|
|
|
|
public void SetUp_StubSettingUtils()
|
|
|
|
|
|
{
|
|
|
|
|
|
mockGeneralSettingsUtils = ISettingsUtilsMocks.GetStubSettingsUtils<GeneralSettings>();
|
|
|
|
|
|
mockPowerRenamePropertiesUtils = ISettingsUtilsMocks.GetStubSettingsUtils<PowerRenameLocalProperties>();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-08-14 14:26:41 -07:00
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void IsEnabled_ShouldEnableModule_WhenSuccessful()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
|
|
|
|
{
|
|
|
|
|
|
OutGoingGeneralSettings snd = JsonSerializer.Deserialize<OutGoingGeneralSettings>(msg);
|
|
|
|
|
|
Assert.IsTrue(snd.GeneralSettings.Enabled.PowerRename);
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// arrange
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
// act
|
|
|
|
|
|
viewModel.IsEnabled = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void MRUEnabled_ShouldSetValue2True_WhenSuccessful()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
|
|
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.MRUEnabled.Value);
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// arrange
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
// act
|
|
|
|
|
|
viewModel.MRUEnabled = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void WhenIsEnabledIsOffAndMRUEnabledIsOffGlobalAndMruShouldBeOff()
|
|
|
|
|
|
{
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
viewModel.IsEnabled = false;
|
|
|
|
|
|
viewModel.MRUEnabled = false;
|
|
|
|
|
|
|
|
|
|
|
|
Assert.IsFalse(viewModel.GlobalAndMruEnabled);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void WhenIsEnabledIsOffAndMRUEnabledIsOnGlobalAndMruShouldBeOff()
|
|
|
|
|
|
{
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
viewModel.IsEnabled = false;
|
|
|
|
|
|
viewModel.MRUEnabled = true;
|
|
|
|
|
|
|
|
|
|
|
|
Assert.IsFalse(viewModel.GlobalAndMruEnabled);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void WhenIsEnabledIsOnAndMRUEnabledIsOffGlobalAndMruShouldBeOff()
|
|
|
|
|
|
{
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
viewModel.IsEnabled = true;
|
|
|
|
|
|
viewModel.MRUEnabled = false;
|
|
|
|
|
|
|
|
|
|
|
|
Assert.IsFalse(viewModel.GlobalAndMruEnabled);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void WhenIsEnabledIsOnAndMRUEnabledIsOnGlobalAndMruShouldBeOn()
|
|
|
|
|
|
{
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg => { return 0; };
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
viewModel.IsEnabled = true;
|
|
|
|
|
|
viewModel.MRUEnabled = true;
|
|
|
|
|
|
|
|
|
|
|
|
Assert.IsTrue(viewModel.GlobalAndMruEnabled);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void EnabledOnContextMenu_ShouldSetValue2True_WhenSuccessful()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
|
|
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.ShowIcon.Value);
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// arrange
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
// act
|
|
|
|
|
|
viewModel.EnabledOnContextMenu = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void EnabledOnContextExtendedMenu_ShouldSetValue2True_WhenSuccessful()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
|
|
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.ShowIcon.Value);
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// arrange
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
// act
|
|
|
|
|
|
viewModel.EnabledOnContextMenu = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void RestoreFlagsOnLaunch_ShouldSetValue2True_WhenSuccessful()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
|
|
|
|
Assert.IsTrue(snd.Powertoys.PowerRename.Properties.PersistState.Value);
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// arrange
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
// act
|
|
|
|
|
|
viewModel.RestoreFlagsOnLaunch = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestMethod]
|
|
|
|
|
|
public void MaxDispListNum_ShouldSetMaxSuggListTo20_WhenSuccessful()
|
|
|
|
|
|
{
|
|
|
|
|
|
// Assert
|
|
|
|
|
|
Func<string, int> SendMockIPCConfigMSG = msg =>
|
|
|
|
|
|
{
|
|
|
|
|
|
PowerRenameSettingsIPCMessage snd = JsonSerializer.Deserialize<PowerRenameSettingsIPCMessage>(msg);
|
|
|
|
|
|
Assert.AreEqual(20, snd.Powertoys.PowerRename.Properties.MaxMRUSize.Value);
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// arrange
|
2020-09-23 13:20:32 -07:00
|
|
|
|
PowerRenameViewModel viewModel = new PowerRenameViewModel(mockPowerRenamePropertiesUtils.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SendMockIPCConfigMSG, generalSettings_file_name);
|
2020-08-14 14:26:41 -07:00
|
|
|
|
|
|
|
|
|
|
// act
|
|
|
|
|
|
viewModel.MaxDispListNum = 20;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|