Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public async Task SendEventWithNullDataShouldCallCorrectMethod()
        {
            // ACT
            await DefaultDaemonHost.SendEvent("test_event");

            // ASSERT
            DefaultHassClientMock.Verify(n => n.SendEvent("test_event", null));
        }
Ejemplo n.º 4
0
        public async Task StopCallsCloseClient()
        {
            await InitializeFakeDaemon().ConfigureAwait(false);

            await DefaultDaemonHost.Stop().ConfigureAwait(false);

            DefaultHassClientMock.Verify(n => n.CloseAsync(), Times.Once);
        }
Ejemplo n.º 5
0
        public async Task GetServicesShouldCallCorrectFunctions()
        {
            await InitializeFakeDaemon().ConfigureAwait(false);

            var services = await DefaultDaemonHost.GetAllServices().ConfigureAwait(false);

            DefaultHassClientMock.Verify(n => n.GetServices(), Times.Once);
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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));
        }
Ejemplo n.º 10
0
        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"));
        }
Ejemplo n.º 11
0
        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));
        }
Ejemplo n.º 12
0
        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>()));
        }
Ejemplo n.º 13
0
        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>()));
        }
Ejemplo n.º 14
0
        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));
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        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));
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        public async Task StopCallsCloseClient()
        {
            await DefaultDaemonHost.Stop();

            DefaultHassClientMock.Verify(n => n.CloseAsync(), Times.Once);
        }