From 837fe46ed3ea81d7552a84eeb79379cda78d8afd Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Tue, 28 Jul 2026 00:24:28 -0700 Subject: [PATCH] Add Awake module services unit test seed (#48346) Adds an Awake module-services unit-test seed for runtime state creation from timed settings. This is product/module coverage, not Settings UI model serialization.\n\nValidation:\n- Restored and built Awake.ModuleServices.UnitTests x64 Debug\n- Ran the filtered test CreateState_TimedSettings_ReturnsTimedStateWithDuration: 1 passed Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- PowerToys.slnx | 4 +++ .../Awake.ModuleServices.UnitTests.csproj | 25 +++++++++++++ .../AwakeStateMappingTests.cs | 36 +++++++++++++++++++ .../Awake.ModuleServices.csproj | 6 ++++ .../Awake.ModuleServices/AwakeService.cs | 5 +++ 5 files changed, 76 insertions(+) create mode 100644 src/modules/awake/Awake.ModuleServices.UnitTests/Awake.ModuleServices.UnitTests.csproj create mode 100644 src/modules/awake/Awake.ModuleServices.UnitTests/AwakeStateMappingTests.cs diff --git a/PowerToys.slnx b/PowerToys.slnx index c93236d9a1..a950316aaf 100644 --- a/PowerToys.slnx +++ b/PowerToys.slnx @@ -167,6 +167,10 @@ + + + + diff --git a/src/modules/awake/Awake.ModuleServices.UnitTests/Awake.ModuleServices.UnitTests.csproj b/src/modules/awake/Awake.ModuleServices.UnitTests/Awake.ModuleServices.UnitTests.csproj new file mode 100644 index 0000000000..ec6d943d5a --- /dev/null +++ b/src/modules/awake/Awake.ModuleServices.UnitTests/Awake.ModuleServices.UnitTests.csproj @@ -0,0 +1,25 @@ + + + + + + false + true + Awake.ModuleServices.UnitTests + Exe + $(RepoRoot)$(Platform)\$(Configuration)\tests\Awake.ModuleServices.UnitTests\ + false + false + enable + enable + + + + + + + + + + + diff --git a/src/modules/awake/Awake.ModuleServices.UnitTests/AwakeStateMappingTests.cs b/src/modules/awake/Awake.ModuleServices.UnitTests/AwakeStateMappingTests.cs new file mode 100644 index 0000000000..a8efe09c8b --- /dev/null +++ b/src/modules/awake/Awake.ModuleServices.UnitTests/AwakeStateMappingTests.cs @@ -0,0 +1,36 @@ +// 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 Microsoft.PowerToys.Settings.UI.Library; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Awake.ModuleServices.UnitTests; + +[TestClass] +public sealed class AwakeStateMappingTests +{ + [TestMethod] + public void CreateState_TimedSettings_ReturnsTimedStateWithDuration() + { + var settings = new AwakeSettings + { + Properties = + { + Mode = AwakeMode.TIMED, + KeepDisplayOn = true, + IntervalHours = 1, + IntervalMinutes = 30, + ExpirationDateTime = new DateTimeOffset(2030, 1, 2, 3, 4, 5, TimeSpan.Zero), + }, + }; + + var state = AwakeService.CreateState(isRunning: true, settings); + + Assert.IsTrue(state.IsRunning); + Assert.AreEqual(AwakeStateMode.Timed, state.Mode); + Assert.IsTrue(state.KeepDisplayOn); + Assert.AreEqual(TimeSpan.FromMinutes(90), state.Duration); + Assert.IsNull(state.Expiration); + } +} diff --git a/src/modules/awake/Awake.ModuleServices/Awake.ModuleServices.csproj b/src/modules/awake/Awake.ModuleServices/Awake.ModuleServices.csproj index 75be8c685d..ade1a58e5f 100644 --- a/src/modules/awake/Awake.ModuleServices/Awake.ModuleServices.csproj +++ b/src/modules/awake/Awake.ModuleServices/Awake.ModuleServices.csproj @@ -10,6 +10,12 @@ false + + + <_Parameter1>Awake.ModuleServices.UnitTests + + + diff --git a/src/modules/awake/Awake.ModuleServices/AwakeService.cs b/src/modules/awake/Awake.ModuleServices/AwakeService.cs index 0ce08fa0c0..d2b5a2dc06 100644 --- a/src/modules/awake/Awake.ModuleServices/AwakeService.cs +++ b/src/modules/awake/Awake.ModuleServices/AwakeService.cs @@ -33,6 +33,11 @@ public sealed class AwakeService : ModuleServiceBase, IAwakeService var isRunning = IsAwakeProcessRunning(); var settings = ReadSettings(); + return CreateState(isRunning, settings); + } + + internal static AwakeState CreateState(bool isRunning, AwakeSettings? settings) + { if (settings is null) { return new AwakeState(isRunning, AwakeStateMode.Passive, false, null, null);