Remove ISettingsUtils and ISettingsPath interfaces (#44331)

<!-- Enter a brief description/summary of your PR here. What does it
fix/what does it change/how was it tested (even manually, if necessary)?
-->
## Summary of the Pull Request

This PR removes the ISettingsUtils and ISettingsPath interfaces to
reduce some complexity. They only existed so the classes can be used
with moq. But this is also possible by using virtual methods which is
cleaner.

<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist

- [ ] Closes: #xxx
<!-- - [ ] Closes: #yyy (add separate lines for additional resolved
issues) -->
- [ ] **Communication:** I've discussed this with core contributors
already. If the work hasn't been agreed, this work might be rejected
- [x] **Tests:** Added/updated and all pass
- [ ] **Localization:** All end-user-facing strings can be localized
- [ ] **Dev docs:** Added/updated
- [ ] **New binaries:** Added on the required places
- [ ] [JSON for
signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json)
for new binaries
- [ ] [WXS for
installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs)
for new binaries and localization folder
- [ ] [YML for CI
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml)
for new test projects
- [ ] [YML for signed
pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml)
- [ ] **Documentation updated:** If checked, please file a pull request
on [our docs
repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys)
and link it here: #xxx
This commit is contained in:
Noraa Junker
2025-12-19 03:30:01 +01:00
committed by GitHub
parent 9aab0f3893
commit 7cd201d355
58 changed files with 112 additions and 154 deletions

View File

@@ -27,10 +27,10 @@ namespace Microsoft.PowerToys.Settings.UI.UnitTests.BackwardsCompatibility
internal sealed class MockSettingsRepository<T> : ISettingsRepository<T>
where T : ISettingsConfig, new()
{
private readonly ISettingsUtils _settingsUtils;
private readonly SettingsUtils _settingsUtils;
private T _settingsConfig;
public MockSettingsRepository(ISettingsUtils settingsUtils)
public MockSettingsRepository(SettingsUtils settingsUtils)
{
_settingsUtils = settingsUtils;
}

View File

@@ -2,6 +2,7 @@
// 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.IO.Abstractions;
using Microsoft.PowerToys.Settings.UI.Library;
using Microsoft.PowerToys.Settings.UI.Library.Interfaces;
using Moq;
@@ -11,10 +12,10 @@ namespace Microsoft.PowerToys.Settings.UI.UnitTests.Mocks
internal static class ISettingsUtilsMocks
{
// Stubs out empty values for imageresizersettings and general settings as needed by the imageresizer view model
internal static Mock<ISettingsUtils> GetStubSettingsUtils<T>()
internal static Mock<SettingsUtils> GetStubSettingsUtils<T>()
where T : ISettingsConfig, new()
{
var settingsUtils = new Mock<ISettingsUtils>();
var settingsUtils = new Mock<SettingsUtils>(new FileSystem(), null);
settingsUtils
.Setup(x => x.GetSettingsOrDefault<T>(It.IsAny<string>(), It.IsAny<string>()))
.Returns(new T());

View File

@@ -14,7 +14,7 @@ namespace CommonLibTest
[TestClass]
public class SettingsRepositoryTest
{
private static Task<SettingsRepository<GeneralSettings>> GetSettingsRepository(ISettingsUtils settingsUtils)
private static Task<SettingsRepository<GeneralSettings>> GetSettingsRepository(SettingsUtils settingsUtils)
{
return Task.Run(() =>
{

View File

@@ -27,7 +27,7 @@ namespace ViewModelTests
{
// Arrange
var mockIOProvider = BackCompatTestProperties.GetModuleIOProvider(version, ColorPickerSettings.ModuleName, fileName);
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var mockSettingsUtils = new SettingsUtils(mockIOProvider.Object, settingPathMock.Object);
ColorPickerSettings originalSettings = mockSettingsUtils.GetSettingsOrDefault<ColorPickerSettings>(ColorPickerSettings.ModuleName);

View File

@@ -32,7 +32,7 @@ namespace ViewModelTests
[DataRow("v0.22.0", "settings.json")]
public void OriginalFilesModificationTest(string version, string fileName)
{
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var fileMock = BackCompatTestProperties.GetModuleIOProvider(version, FancyZonesSettings.ModuleName, fileName);
var mockSettingsUtils = new SettingsUtils(fileMock.Object, settingPathMock.Object);
@@ -89,9 +89,9 @@ namespace ViewModelTests
return 0;
}
private Mock<ISettingsUtils> mockGeneralSettingsUtils;
private Mock<SettingsUtils> mockGeneralSettingsUtils;
private Mock<ISettingsUtils> mockFancyZonesSettingsUtils;
private Mock<SettingsUtils> mockFancyZonesSettingsUtils;
private Func<string, int> sendMockIPCConfigMSG = msg => { return 0; };

View File

@@ -20,7 +20,7 @@ namespace ViewModelTests
{
public const string GeneralSettingsFileName = "Test\\GeneralSettings";
private Mock<ISettingsUtils> mockGeneralSettingsUtils;
private Mock<SettingsUtils> mockGeneralSettingsUtils;
[TestInitialize]
public void SetUpStubSettingUtils()
@@ -36,7 +36,7 @@ namespace ViewModelTests
[DataRow("v0.22.0")]
public void OriginalFilesModificationTest(string version)
{
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var fileMock = BackCompatTestProperties.GetGeneralSettingsIOProvider(version);
var mockGeneralSettingsUtils = new SettingsUtils(fileMock.Object, settingPathMock.Object);

View File

@@ -19,9 +19,9 @@ namespace ViewModelTests
[TestClass]
public class ImageResizer
{
private Mock<ISettingsUtils> _mockGeneralSettingsUtils;
private Mock<SettingsUtils> _mockGeneralSettingsUtils;
private Mock<ISettingsUtils> _mockImgResizerSettingsUtils;
private Mock<SettingsUtils> _mockImgResizerSettingsUtils;
[TestInitialize]
public void SetUpStubSettingUtils()
@@ -41,7 +41,7 @@ namespace ViewModelTests
[DataRow("v0.22.0", "settings.json")]
public void OriginalFilesModificationTest(string version, string fileName)
{
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var fileMock = BackCompatTestProperties.GetModuleIOProvider(version, ImageResizerSettings.ModuleName, fileName);
var mockSettingsUtils = new SettingsUtils(fileMock.Object, settingPathMock.Object);

View File

@@ -46,7 +46,7 @@ namespace ViewModelTests
mockSettings = new PowerLauncherSettings();
sendCallbackMock = new SendCallbackMock();
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var mockGeneralIOProvider = BackCompatTestProperties.GetGeneralSettingsIOProvider("v0.22.0");
var mockGeneralSettingsUtils = new SettingsUtils(mockGeneralIOProvider.Object, settingPathMock.Object);
mockGeneralSettingsRepository = new BackCompatTestProperties.MockSettingsRepository<GeneralSettings>(mockGeneralSettingsUtils);
@@ -81,7 +81,7 @@ namespace ViewModelTests
[DataRow("v0.22.0", "settings.json")]
public void OriginalFilesModificationTest(string version, string fileName)
{
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var mockIOProvider = BackCompatTestProperties.GetModuleIOProvider(version, PowerLauncherSettings.ModuleName, fileName);
var mockSettingsUtils = new SettingsUtils(mockIOProvider.Object, settingPathMock.Object);

View File

@@ -17,9 +17,9 @@ namespace ViewModelTests
[TestClass]
public class PowerPreview
{
private Mock<ISettingsUtils> mockPowerPreviewSettingsUtils;
private Mock<SettingsUtils> mockPowerPreviewSettingsUtils;
private Mock<ISettingsUtils> mockGeneralSettingsUtils;
private Mock<SettingsUtils> mockGeneralSettingsUtils;
[TestInitialize]
public void SetUpStubSettingUtils()
@@ -39,7 +39,7 @@ namespace ViewModelTests
[DataRow("v0.22.0", "settings.json")]
public void OriginalFilesModificationTest(string version, string fileName)
{
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var fileMock = BackCompatTestProperties.GetModuleIOProvider(version, PowerPreviewSettings.ModuleName, fileName);
var mockSettingsUtils = new SettingsUtils(fileMock.Object, settingPathMock.Object);

View File

@@ -19,9 +19,9 @@ namespace ViewModelTests
{
public const string GeneralSettingsFileName = "Test\\PowerRename";
private Mock<ISettingsUtils> mockGeneralSettingsUtils;
private Mock<SettingsUtils> mockGeneralSettingsUtils;
private Mock<ISettingsUtils> mockPowerRenamePropertiesUtils;
private Mock<SettingsUtils> mockPowerRenamePropertiesUtils;
[TestInitialize]
public void SetUpStubSettingUtils()
@@ -40,7 +40,7 @@ namespace ViewModelTests
[DataRow("v0.22.0", "power-rename-settings.json")]
public void OriginalFilesModificationTest(string version, string fileName)
{
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var mockIOProvider = BackCompatTestProperties.GetModuleIOProvider(version, PowerRenameSettings.ModuleName, fileName);
var mockSettingsUtils = new SettingsUtils(mockIOProvider.Object, settingPathMock.Object);

View File

@@ -31,7 +31,7 @@ namespace ViewModelTests
[DataRow("v0.22.0", "settings.json")]
public void OriginalFilesModificationTest(string version, string fileName)
{
var settingPathMock = new Mock<ISettingsPath>();
var settingPathMock = new Mock<SettingPath>();
var mockIOProvider = BackCompatTestProperties.GetModuleIOProvider(version, ShortcutGuideSettings.ModuleName, fileName);
var mockSettingsUtils = new SettingsUtils(mockIOProvider.Object, settingPathMock.Object);
ShortcutGuideSettings originalSettings = mockSettingsUtils.GetSettingsOrDefault<ShortcutGuideSettings>(ShortcutGuideSettings.ModuleName);
@@ -56,9 +56,9 @@ namespace ViewModelTests
BackCompatTestProperties.VerifyGeneralSettingsIOProviderWasRead(mockGeneralIOProvider, expectedCallCount);
}
private Mock<ISettingsUtils> mockGeneralSettingsUtils;
private Mock<SettingsUtils> mockGeneralSettingsUtils;
private Mock<ISettingsUtils> mockShortcutGuideSettingsUtils;
private Mock<SettingsUtils> mockShortcutGuideSettingsUtils;
[TestInitialize]
public void SetUpStubSettingUtils()
@@ -92,7 +92,7 @@ namespace ViewModelTests
public void ThemeIndexShouldSetThemeToDarkWhenSuccessful()
{
// Arrange
var settingsUtilsMock = new Mock<ISettingsUtils>();
var settingsUtilsMock = new Mock<SettingsUtils>(new FileSystem(), null);
ShortcutGuideViewModel viewModel = new ShortcutGuideViewModel(settingsUtilsMock.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SettingsRepository<ShortcutGuideSettings>.GetInstance(mockShortcutGuideSettingsUtils.Object), msg => { return 0; }, ShortCutGuideTestFolderName);
// Initialize shortcut guide settings theme to 'system' to be in sync with shortcut_guide.h.
@@ -110,7 +110,7 @@ namespace ViewModelTests
public void OverlayOpacityShouldSeOverlayOpacityToOneHundredWhenSuccessful()
{
// Arrange
var settingsUtilsMock = new Mock<ISettingsUtils>();
var settingsUtilsMock = new Mock<SettingsUtils>(new FileSystem(), null);
ShortcutGuideViewModel viewModel = new ShortcutGuideViewModel(settingsUtilsMock.Object, SettingsRepository<GeneralSettings>.GetInstance(mockGeneralSettingsUtils.Object), SettingsRepository<ShortcutGuideSettings>.GetInstance(mockShortcutGuideSettingsUtils.Object), msg => { return 0; }, ShortCutGuideTestFolderName);
Assert.AreEqual(90, viewModel.OverlayOpacity);