public async Task SpeakCallsCorrectServiceCall() { // ARRANGE DefaultDaemonHost.InternalDelayTimeForTts = 0; // For testing // ACT await DefaultDaemonApp .MediaPlayer("media_player.correct_player") .Speak("a message") .ExecuteAsync(); var(daemonTask, _) = ReturnRunningDefauldDaemonHostTask(); await Task.Delay(20); var expObject = new ExpandoObject(); dynamic expectedAttruibutes = expObject; expectedAttruibutes.entity_id = "media_player.correct_player"; expectedAttruibutes.message = "a message"; // ASSERT DefaultHassClientMock.Verify(n => n.CallService("tts", "google_cloud_say", expObject, true)); await WaitUntilCanceled(daemonTask); }
public async Task SpeakShouldCallCorrectService() { // ARRANGE DefaultHassClientMock.FakeStates["media_player.fakeplayer"] = new HassState { EntityId = "media_player.fakeplayer", }; DefaultDaemonHost.InternalDelayTimeForTts = 0; // For testing // ACT var(daemonTask, _) = ReturnRunningDefauldDaemonHostTask(); DefaultDaemonHost.Speak("media_player.fakeplayer", "Hello test!"); var(_, expObject) = GetDynamicObject( ("entity_id", "media_player.fakeplayer"), ("message", "Hello test!") ); await Task.Delay(50); // ASSERT DefaultHassClientMock.Verify(n => n.CallService("tts", "google_cloud_say", expObject, true)); await WaitUntilCanceled(daemonTask); }
public async Task SendEventWithNullDataShouldCallCorrectMethod() { // ACT await DefaultDaemonHost.SendEvent("test_event"); // ASSERT DefaultHassClientMock.Verify(n => n.SendEvent("test_event", null)); }
public async Task StopCallsCloseClient() { await InitializeFakeDaemon().ConfigureAwait(false); await DefaultDaemonHost.Stop().ConfigureAwait(false); DefaultHassClientMock.Verify(n => n.CloseAsync(), Times.Once); }
public async Task GetServicesShouldCallCorrectFunctions() { await InitializeFakeDaemon().ConfigureAwait(false); var services = await DefaultDaemonHost.GetAllServices().ConfigureAwait(false); DefaultHassClientMock.Verify(n => n.GetServices(), Times.Once); }
public async Task SetStateShouldReturnCorrectData() { await DefaultDaemonHost.SetState("sensor.any_sensor", "on", ("attr", "value")); var(dynObj, expObj) = GetDynamicObject( ("attr", "value") ); DefaultHassClientMock.Verify(n => n.SetState("sensor.any_sensor", "on", expObj)); }
public async Task SetDaemonStateAsyncShouldCallCorrectFunctions() { await InitializeFakeDaemon().ConfigureAwait(false); await DefaultDaemonHost.SetDaemonStateAsync(5, 2).ConfigureAwait(false); DefaultHassClientMock.Verify(n => n.SetState("sensor.netdaemon_status", "Connected", It.IsAny <object>()), Times.Once); }
public async Task SetStateShouldReturnCorrectData() { await InitializeFakeDaemon().ConfigureAwait(false); await DefaultDaemonHost.SetStateAsync("sensor.any_sensor", "on", ("attr", "value")).ConfigureAwait(false); var(dynObj, expObj) = GetDynamicObject( ("attr", "value") ); DefaultHassClientMock.Verify(n => n.SetState("sensor.any_sensor", "on", expObj)); }
public async Task SendEventShouldCallCorrectMethod() { // ARRANGE var eventData = GetDynamicDataObject(); // ACT await DefaultDaemonHost.SendEvent("test_event", eventData); // ASSERT var expandoObject = (ExpandoObject)eventData; DefaultHassClientMock.Verify(n => n.SendEvent("test_event", expandoObject)); }
public async Task ConnectToHAIntegrationShouldCallCorrectFunction() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); await DefaultDaemonHost.ConnectToHAIntegration().ConfigureAwait(false); // ACT await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT DefaultHassClientMock.Verify(n => n.GetApiCall <object>("netdaemon/info")); }
public async Task SetStateWaitForResultShouldCallCorrectFunction() { await InitializeFakeDaemon().ConfigureAwait(false); var(dynObj, expObj) = GetDynamicObject( ("attr", "value") ); var entity = await DefaultDaemonHost .SetStateAndWaitForResponseAsync("sensor.any_sensor", "on", dynObj, true) .ConfigureAwait(false); DefaultHassClientMock.Verify(n => n.SetState("sensor.any_sensor", "on", expObj)); }
public async Task ToggleAsyncWithLightCallsSendMessageWithCorrectEntityId() { // ARRANGE var excpectedAttributes = new ExpandoObject(); ((IDictionary <string, object>)excpectedAttributes)["entity_id"] = "light.correct_entity"; // ACT await DefaultDaemonHost.ToggleAsync("light.correct_entity"); // ASSERT DefaultHassClientMock.Verify(n => n.CallService("light", "toggle", excpectedAttributes, It.IsAny <bool>())); }
public async Task TurnOnAsyncWithLightCallsSendMessageWithCorrectEntityId() { // ARRANGE var(_, expectedAttributes) = GetDynamicObject( ("entity_id", "light.correct_entity") ); // ACT await DefaultDaemonHost.TurnOnAsync("light.correct_entity"); // ASSERT DefaultHassClientMock.Verify(n => n.CallService("light", "turn_on", expectedAttributes, It.IsAny <bool>())); }
public async Task SetStateShouldReturnCorrectData() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); var(dynObj, expObj) = GetDynamicObject( ("attr", "value")); // ACT DefaultDaemonRxApp.SetState("sensor.any_sensor", "on", dynObj); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT DefaultHassClientMock.Verify(n => n.SetState("sensor.any_sensor", "on", expObj)); }
public async Task SpeakShouldWaitUntilMediaPlays() { // ARRANGE // Get a running default Daemon var(daemonTask, _) = ReturnRunningDefauldDaemonHostTask(500); DefaultDaemonHost.InternalDelayTimeForTts = 0; // Allow now extra waittime // Expected data call service var(expectedAttruibutes, expectedAttributesExpObject) = GetDynamicObject( ("entity_id", "media_player.fakeplayer"), ("message", "Hello test!") ); // Add the player that we want to fake having with the fake playing 0.1 second media duration dynamic currentStateAttributes = new ExpandoObject(); currentStateAttributes.media_duration = 0.1; DefaultDaemonHost.InternalState["media_player.fakeplayer"] = new EntityState { EntityId = "media_player.fakeplayer", Attribute = currentStateAttributes }; await Task.Delay(100); // ACT DefaultDaemonHost.Speak("media_player.fakeplayer", "Hello test!"); await Task.Delay(80); DefaultDaemonHost.Speak("media_player.fakeplayer", "Hello test!"); // ASSERT // Called once after 150 ms DefaultHassClientMock.Verify(n => n.CallService("tts", "google_cloud_say", expectedAttributesExpObject, true), Times.Once); await Task.Delay(200); // Called twice after 250ms DefaultHassClientMock.Verify(n => n.CallService("tts", "google_cloud_say", expectedAttributesExpObject, true), Times.Exactly(2)); await WaitUntilCanceled(daemonTask); }
public async Task EntityOnStateTriggerScript() { // ARRANGE DefaultHassClientMock.AddChangedEvent("binary_sensor.pir", "on", "off"); var cancelSource = DefaultHassClientMock.GetSourceWithTimeout(); // ACT DefaultDaemonApp .Entity("binary_sensor.pir") .WhenStateChange(to: "off") .RunScript("thescript") .Execute(); await RunDefauldDaemonUntilCanceled(); DefaultHassClientMock.Verify(n => n.CallService("script", "thescript", It.IsAny <object>(), false)); }
public async Task SetStateDynamicWithNoWaitShouldCallCorrectFunction() { await InitializeFakeDaemon().ConfigureAwait(false); var(dynObj, expObj) = GetDynamicObject( ("attr", "value") ); DefaultDaemonHost.HasNetDaemonIntegration = true; var entity = await DefaultDaemonHost .SetStateAndWaitForResponseAsync("sensor.any_sensor", "on", new { attr = "value" }, false) .ConfigureAwait(false); DefaultHassClientMock.Verify(n => n.CallService("netdaemon", "entity_create", It.IsAny <object>(), null, false), Times.Once); DefaultHassClientMock.Verify(n => n.GetState("sensor.any_sensor"), Times.Never); Assert.Null(entity); }
public async Task StopCallsCloseClient() { await DefaultDaemonHost.Stop(); DefaultHassClientMock.Verify(n => n.CloseAsync(), Times.Once); }