Skip to content

Commit

Permalink
More tests
Browse files Browse the repository at this point in the history
  • Loading branch information
helto4real committed May 18, 2020
1 parent c193e73 commit 3ca8244
Show file tree
Hide file tree
Showing 3 changed files with 200 additions and 119 deletions.
16 changes: 2 additions & 14 deletions src/App/NetDaemon.App/Common/Reactive/AppDaemonRxApp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -209,11 +209,7 @@ public IDisposable RunIn(TimeSpan timespan, Action action)
LogError(e, "Error, RunIn APP: {app}", Id ?? "unknown");
}
},
ex =>
{
LogError(ex, "Error, RunIn_ex APP: {app}", Id ?? "unknown");
},
() => Log("Exiting RunIn for app {app}, {trigger}:{span}", Id!, timespan)
() => LogTrace("Exiting RunIn for app {app}, {trigger}:{span}", Id!, timespan)
, result.Token);
return result;
}
Expand Down Expand Up @@ -283,11 +279,7 @@ internal virtual IDisposable CreateObservableIntervall(TimeSpan timespan, Action
LogError(e, "Error, RunEvery APP: {app}", Id ?? "unknown");
}
},
ex =>
{
LogError(ex, "Error, RunEvery_ex APP: {app}", Id ?? "unknown");
},
() => Log("Exiting RunEvery for app {app}, {trigger}:{span}", Id!, timespan)
() => LogTrace("Exiting RunEvery for app {app}, {trigger}:{span}", Id!, timespan)
, result.Token);

return result;
Expand Down Expand Up @@ -325,10 +317,6 @@ internal virtual IDisposable CreateObservableTimer(DateTime timeOfDayToTrigger,
LogError(e, "Error, RunDaily APP: {app}", Id ?? "unknown");
}
},
ex =>
{
LogError(ex, "Error, RunDaily_ex APP: {app}", Id ?? "unknown");
},
() => Log("Exiting timer for app {app}, {trigger}:{span}",
Id!, timeOfDayToTrigger, interval),
result.Token
Expand Down
181 changes: 101 additions & 80 deletions tests/NetDaemon.Daemon.Tests/Reactive/RxAppTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,22 @@ public RxAppTest() : base()
{
}

[Fact]
public async Task CallServiceShouldCallCorrectFunction()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.CallService("mydomain", "myservice", dynObj);
await daemonTask;

// ASSERT
DefaultHassClientMock.VerifyCallService("mydomain", "myservice", ("attr", "value"));
}

[Fact]
public async Task NewAllEventDataShouldCallFunction()
{
Expand Down Expand Up @@ -51,6 +67,28 @@ public async Task NewEventShouldCallFunction()
var daemonTask = await GetConnectedNetDaemonTask();
var called = false;

// ACT
DefaultDaemonRxApp.EventChanges
.Subscribe(s =>
{
called = true;
});

DefaultHassClientMock.AddCustomEvent("AN_EVENT", new { somedata = "hello" });

await daemonTask;

// ASSERT
Assert.True(called);
}

[Fact]
public async Task NewStateEventShouldCallFunction()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var called = false;

// ACT
DefaultDaemonRxApp.StateChanges
.Subscribe(s =>
Expand All @@ -66,6 +104,40 @@ public async Task NewEventShouldCallFunction()
Assert.True(called);
}

[Fact]
public async Task RunScriptShouldCallCorrectFunction()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.RunScript("myscript");
await daemonTask;

// ASSERT


DefaultHassClientMock.VerifyCallServiceTimes("myscript", Times.Once());
}

[Fact]
public async Task RunScriptWithDomainShouldCallCorrectFunction()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.RunScript("script.myscript");
await daemonTask;

// ASSERT
DefaultHassClientMock.VerifyCallServiceTimes("myscript", Times.Once());
}

[Fact]
public async Task SameStateEventShouldNotCallFunction()
{
Expand All @@ -87,6 +159,21 @@ public async Task SameStateEventShouldNotCallFunction()
// ASSERT
Assert.False(called);
}
[Fact]
public async Task SetStateShouldReturnCorrectData()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.SetState("sensor.any_sensor", "on", dynObj);
await daemonTask;

// ASSERT
DefaultHassClientMock.Verify(n => n.SetState("sensor.any_sensor", "on", expObj));
}

[Fact]
public async Task StartupAsyncShouldThrowIfDaemonIsNull()
Expand All @@ -111,6 +198,20 @@ public async Task StateShouldReturnCorrectEntity()
// ASSERT
Assert.NotNull(entity);
}
[Fact]
public async Task StatesShouldReturnCorrectEntity()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
// ACT
var entity = DefaultDaemonRxApp.States.FirstOrDefault(n => n.EntityId == "binary_sensor.pir");

await daemonTask.ConfigureAwait(false);
// ASSERT
Assert.NotNull(entity);
Assert.Equal("binary_sensor.pir", entity.EntityId);
}

[Fact]
public async Task UsingEntitiesLambdaNewEventShouldCallFunction()
{
Expand Down Expand Up @@ -222,85 +323,5 @@ public async Task WhenStateStaysSameForTimeItShouldCallFunction()

Assert.True(isRun);
}

[Fact]
public async Task SetStateShouldReturnCorrectData()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.SetState("sensor.any_sensor", "on", dynObj);
await daemonTask;

// ASSERT
DefaultHassClientMock.Verify(n => n.SetState("sensor.any_sensor", "on", expObj));
}

[Fact]
public async Task RunScriptShouldCallCorrectFunction()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.RunScript("myscript");
await daemonTask;

// ASSERT


DefaultHassClientMock.VerifyCallServiceTimes("myscript", Times.Once());
}

[Fact]
public async Task RunScriptWithDomainShouldCallCorrectFunction()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.RunScript("script.myscript");
await daemonTask;

// ASSERT
DefaultHassClientMock.VerifyCallServiceTimes("myscript", Times.Once());
}

[Fact]
public async Task CallServiceShouldCallCorrectFunction()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
var (dynObj, expObj) = GetDynamicObject(
("attr", "value"));

// ACT
DefaultDaemonRxApp.CallService("mydomain", "myservice", dynObj);
await daemonTask;

// ASSERT
DefaultHassClientMock.VerifyCallService("mydomain", "myservice", ("attr", "value"));
}

[Fact]
public async Task StatesShouldReturnCorrectEntity()
{
// ARRANGE
var daemonTask = await GetConnectedNetDaemonTask();
// ACT
var entity = DefaultDaemonRxApp.States.FirstOrDefault(n => n.EntityId == "binary_sensor.pir");

await daemonTask.ConfigureAwait(false);
// ASSERT
Assert.NotNull(entity);
Assert.Equal("binary_sensor.pir", entity.EntityId);
}
}
}
Loading

0 comments on commit 3ca8244

Please sign in to comment.