public async Task TestApplicationReactToNewEvents() { var timedCancellationSource = new CancellationTokenSource(-1); var haRunner = new HomeAssistantRunnerMock(timedCancellationSource.Token); var hostBuilder = GetDefaultHostBuilder("Fixtures"); var host = hostBuilder.ConfigureServices((_, services) => services .AddSingleton(haRunner.Object) .AddNetDaemonApp <LocalApp>() .AddTransient <IObservable <HassEvent> >(_ => haRunner.ClientMock.ConnectionMock.HomeAssistantEventMock) ).Build(); var runnerTask = host.RunAsync(); while (!haRunner.ConnectMock.HasObservers && !runnerTask.IsCompleted) { await Task.Delay(10); } haRunner.ConnectMock.OnNext(haRunner.ClientMock.ConnectionMock.Object); _ = (NetDaemonRuntime)host.Services.GetService <IRuntime>() !; haRunner.ClientMock.ConnectionMock.AddStateChangeEvent( new HassState { EntityId = "binary_sensor.mypir", State = "off" }, new HassState { EntityId = "binary_sensor.mypir", State = "on" }); haRunner.ClientMock.ConnectionMock.Verify( n => n.SendCommandAsync <CallServiceCommand>(It.IsAny <CallServiceCommand>(), It.IsAny <CancellationToken>()), Times.Once); timedCancellationSource.Cancel(); await runnerTask.ConfigureAwait(false); }
public async Task TestApplicationIsLoaded() { var timedCancellationSource = new CancellationTokenSource(5000); var haRunner = new HomeAssistantRunnerMock(timedCancellationSource.Token); var hostBuilder = GetDefaultHostBuilder("Fixtures"); var host = hostBuilder.ConfigureServices((_, services) => services .AddSingleton(haRunner.Object) .AddAppsFromAssembly(Assembly.GetExecutingAssembly()) ).Build(); var runnerTask = host.RunAsync(); haRunner.ConnectMock.OnNext(haRunner.ClientMock.ConnectionMock.Object); var service = (NetDaemonRuntime)host.Services.GetService <IRuntime>() !; var instances = service.ApplicationInstances; instances.Where(n => n.Id == "LocalApps.LocalApp").Should().NotBeEmpty(); timedCancellationSource.Cancel(); await runnerTask.ConfigureAwait(false); }
public async Task TestApplicationReactToNewEventsAndThrowException() { var timedCancellationSource = new CancellationTokenSource(5000); var haRunner = new HomeAssistantRunnerMock(timedCancellationSource.Token); var hostBuilder = GetDefaultHostBuilder("Fixtures"); var host = hostBuilder.ConfigureServices((_, services) => services .AddSingleton(haRunner.Object) .AddNetDaemonApp <LocalApp>() ).Build(); var runnerTask = host.RunAsync(); while (!haRunner.ConnectMock.HasObservers && !runnerTask.IsCompleted) { await Task.Delay(10); } haRunner.ConnectMock.OnNext(haRunner.ClientMock.ConnectionMock.Object); _ = (NetDaemonRuntime)host.Services.GetService <IRuntime>() !; haRunner.ClientMock.ConnectionMock.AddStateChangeEvent( new HassState { EntityId = "binary_sensor.mypir_creates_fault", State = "off" }, new HassState { EntityId = "binary_sensor.mypir_creates_fault", State = "on" }); timedCancellationSource.Cancel(); await runnerTask.ConfigureAwait(false); }