Esempio n. 1
0
    public async Task TestExecuteAsync()
    {
        var homeAssistantRunnerMock = new Mock <IHomeAssistantRunner>();
        var appModelMock            = new Mock <IAppModel>();
        var serviceProviderMock     = new Mock <IServiceProvider>();
        var loggerMock = new Mock <ILogger <NetDaemonRuntime> >();

        var connectSubject    = new Subject <IHomeAssistantConnection>();
        var disconnectSubject = new Subject <DisconnectReason>();

        homeAssistantRunnerMock.SetupGet(n => n.OnConnect).Returns(connectSubject);
        homeAssistantRunnerMock.SetupGet(n => n.OnDisconnect).Returns(disconnectSubject);
        var runtime = new NetDaemonRuntime(
            homeAssistantRunnerMock.Object,
            new FakeHassSettingsOptions(),
            new FakeApplicationLocationSettingsOptions(),
            appModelMock.Object,
            serviceProviderMock.Object,
            loggerMock.Object,
            Mock.Of <ICacheManager>()
            );
        var cancelSource = new CancellationTokenSource(5000);
        await runtime.ExecuteAsync(cancelSource.Token).ConfigureAwait(false);

        connectSubject.HasObservers.Should().BeTrue();
        disconnectSubject.HasObservers.Should().BeTrue();
    }
Esempio n. 2
0
    public async Task TestOnConnect()
    {
        var cancelSource                = new CancellationTokenSource(5000);
        var homeAssistantRunnerMock     = new Mock <IHomeAssistantRunner>();
        var homeAssistantConnectionMock = new Mock <IHomeAssistantConnection>();
        var appModelMock                = new Mock <IAppModel>();
        var loggerMock    = new Mock <ILogger <NetDaemonRuntime> >();
        var scopedContext = new Mock <AppScopedHaContextProvider>();

        var connectSubject    = new Subject <IHomeAssistantConnection>();
        var disconnectSubject = new Subject <DisconnectReason>();

        homeAssistantRunnerMock.SetupGet(n => n.OnConnect).Returns(connectSubject);
        homeAssistantRunnerMock.SetupGet(n => n.OnDisconnect).Returns(disconnectSubject);
        homeAssistantRunnerMock.Setup(n => n.RunAsync(
                                          It.IsAny <string>(),
                                          It.IsAny <int>(),
                                          It.IsAny <bool>(),
                                          It.IsAny <string>(),
                                          It.IsAny <TimeSpan>(),
                                          It.IsAny <CancellationToken>()))
        .Returns(async() => { await Task.Delay(-1, cancelSource.Token); });
        homeAssistantRunnerMock.SetupGet(n => n.CurrentConnection)
        .Returns(homeAssistantConnectionMock.Object);

        var serviceCollection = new ServiceCollection();

        serviceCollection.AddScopedHaContext();
        var hassEventSubject = new Subject <HassEvent>();

        serviceCollection.AddTransient <IObservable <HassEvent> >(_ => hassEventSubject);
        serviceCollection.AddSingleton(_ => homeAssistantRunnerMock.Object);
        serviceCollection.AddScoped(_ => scopedContext);

        var serviceProvider = serviceCollection.BuildServiceProvider();

        await using var runtime = new NetDaemonRuntime(
                        homeAssistantRunnerMock.Object,
                        new FakeHassSettingsOptions(),
                        new FakeApplicationLocationSettingsOptions(),
                        appModelMock.Object,
                        serviceProvider,
                        loggerMock.Object,
                        Mock.Of <ICacheManager>()
                        );
        await runtime.ExecuteAsync(cancelSource.Token).ConfigureAwait(false);

        connectSubject.OnNext(
            homeAssistantConnectionMock.Object
            );

        appModelMock.Verify(n => n.InitializeAsync(It.IsAny <CancellationToken>()));
    }