This commit is contained in:
fuenmao
2026-11-13 14:03:25 +08:00
parent 718b138033
commit 9cfd9e24d7
6 changed files with 105 additions and 9 deletions
@@ -288,17 +288,27 @@ public sealed class SceneLightingIntegrationTests
}
[Fact]
public void ProductionRegistrationAddsConfiguredStripWithoutCreatingASecondDeviceControlImplementation()
public async Task ProductionRegistrationAddsSceneStripWithIndependentManualPower()
{
var services = new ServiceCollection(); services.AddOptions(); services.AddLogging(); services.AddHttpClient();
services.AddSingleton<IOptions<HomeAssistantOptions>>(Options.Create(Settings()));
services.AddHealthDevices(); services.AddSingleton<IHomeAssistantGateway>(new FakeHaGateway());
var settings = Settings();
settings.AdditionalSleepLights.Single().StartSleepOnManualPowerOn = false;
var gateway = new FakeHaGateway();
gateway.States[Strip] = Light(Strip);
services.AddSingleton<IOptions<HomeAssistantOptions>>(Options.Create(settings));
services.AddHealthDevices(); services.AddSingleton<IHomeAssistantGateway>(gateway);
services.AddSingleton<IAudioPlaybackGateway>(new FakeAudioGateway());
using var provider = services.BuildServiceProvider();
var registry = provider.GetRequiredService<DeviceModuleRegistry>();
Assert.IsType<ConfiguredSleepLightModule>(registry.ForEntities([Strip]));
var strip = Assert.IsType<ConfiguredSleepLightModule>(registry.ForEntities([Strip]));
Assert.IsType<LightingModule>(registry.ForEntities([Primary]));
Assert.IsType<ClimateModule>(registry.ForEntities([Climate]));
await strip.SetPowerAsync(true, default);
var command = Assert.Single(gateway.Calls);
Assert.Equal(Strip, command.EntityId);
Assert.Equal("turn_on", command.Service);
Assert.Single(command.Data!); // 详情页开灯不套用舒睡模式或亮度。
Assert.False(provider.GetRequiredService<HomeAssistantLightTransitionService>().ForEntity(Strip).GetStatus().Running);
}
[Fact]