public void DelayShouldCancelWithToken() { // ARRANGE using var tokenSource = new CancellationTokenSource(50); // ACT & ASSERT Assert.Throws <OperationCanceledException>(() => DefaultDaemonRxApp.Delay(TimeSpan.FromMilliseconds(300), tokenSource.Token)); }
/// <summary> /// Initializes on each test run /// </summary> public new async Task InitializeAsync() { await base.InitializeAsync().ConfigureAwait(false); await DefaultDaemonApp.StartUpAsync(DefaultDaemonHost).ConfigureAwait(false); await DefaultDaemonRxApp.StartUpAsync(DefaultDaemonHost).ConfigureAwait(false); await DefaultMockedRxApp.Object.StartUpAsync(DefaultDaemonHost).ConfigureAwait(false); }
public async Task RunScriptWithDomainShouldCallCorrectFunction() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); // ACT DefaultDaemonRxApp.RunScript("script.myscript"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT DefaultHassClientMock.VerifyCallServiceTimes("myscript", Times.Once()); }
public async Task TriggerWebhookWithNullDataShouldCallCorrectFunction() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); // ACT DefaultDaemonRxApp.TriggerWebhook("some-id", null); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT VerifyTriggerWebhook("some-id", null); }
public void DelayShouldDelaySyncronysly() { // ARRANGE var startTime = DateTime.Now; // ACT DefaultDaemonRxApp.Delay(TimeSpan.FromMilliseconds(100)); // Compensate that windows resolution is 15ms for system clock bool isAfterTimeout = DateTime.Now.Subtract(startTime).TotalMilliseconds >= 84; // ASSERT Assert.True(isAfterTimeout); }
public async Task StateShouldReturnCorrectEntity() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); // ACT var entity = DefaultDaemonRxApp.State("binary_sensor.pir"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.NotNull(entity); }
public async Task StateShouldReturnNullIfAttributeNotExist() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); // ACT var entity = DefaultDaemonRxApp.State("binary_sensor.pir"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.Null(entity?.Attribute?.not_exists); }
public void DelayShouldDelaySyncronyslyWithToken() { // ARRANGE var startTime = DateTime.Now; using var tokenSource = new CancellationTokenSource(); // ACT DefaultDaemonRxApp.Delay(TimeSpan.FromMilliseconds(100), tokenSource.Token); // ASSERT // Compensate that windows resolution is 15ms for system clock bool isAfterTimeout = DateTime.Now.Subtract(startTime).TotalMilliseconds >= 84; Assert.True(isAfterTimeout); }
/// <summary> /// Clean-up any initialized test objects /// </summary> public new async Task DisposeAsync() { await base.DisposeAsync().ConfigureAwait(false); await _notConnectedDaemonHost.DisposeAsync().ConfigureAwait(false); await DefaultDaemonApp.DisposeAsync().ConfigureAwait(false); await DefaultDaemonRxApp.DisposeAsync().ConfigureAwait(false); await DefaultMockedRxApp.Object.DisposeAsync().ConfigureAwait(false); await DefaultDaemonRxApp.DisposeAsync().ConfigureAwait(false); }
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 CallServiceShouldCallCorrectFunction() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); var(dynObj, _) = GetDynamicObject( ("attr", "value")); // ACT DefaultDaemonRxApp.CallService("mydomain", "myservice", dynObj); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT VerifyCallServiceTuple("mydomain", "myservice", ("attr", "value")); }
public async Task RunInFailureShouldLogError() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); // ACT DefaultDaemonRxApp.RunIn(TimeSpan.FromMilliseconds(100), () => throw new Exception("RxError")); // ASSERT await Task.Delay(150).ConfigureAwait(false); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); LoggerMock.AssertLogged(LogLevel.Error, Times.Once()); }
public async Task GetDataShouldReturnCachedValue() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); // ACT DefaultDaemonRxApp.SaveData("GetDataShouldReturnCachedValue_id", "saved data"); DefaultDaemonRxApp.GetData <string>("GetDataShouldReturnCachedValue_id"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT DefaultDataRepositoryMock.Verify(n => n.Get <string>(It.IsAny <string>()), Times.Never); DefaultDataRepositoryMock.Verify(n => n.Save <string>(It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public async Task SavedDataShouldReturnSameDataUsingExpando() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); dynamic data = new ExpandoObject(); data.Item = "Some data"; // ACT DefaultDaemonRxApp.SaveData("data_exists", data); var collectedData = DefaultDaemonRxApp.GetData <ExpandoObject>("data_exists"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.Equal(data, collectedData); }
public async Task RunScriptShouldCallCorrectFunction() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); var(dynObj, expObj) = GetDynamicObject( ("attr", "value")); // ACT DefaultDaemonRxApp.RunScript("myscript"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT DefaultHassClientMock.VerifyCallServiceTimes("myscript", Times.Once()); }
public async Task UsingEntityNewEventShouldNotCallFunction() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); var called = false; // ACT DefaultDaemonRxApp.Entity("binary_sensor.other_pir") .StateChanges .Subscribe(_ => called = true); DefaultHassClientMock.AddChangedEvent("binary_sensor.pir", "off", "on"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.False(called); }
public async Task CallbackObserverAttributeMissingShouldReturnNull() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); string?missingString = "has initial value"; // ACT DefaultDaemonRxApp.Entities(n => n.EntityId.StartsWith("binary_sensor.pir", true, CultureInfo.InvariantCulture)) .StateChanges .Subscribe(s => missingString = s.New.Attribute?.missing_attribute); DefaultHassClientMock.AddChangedEvent("binary_sensor.pir_2", "off", "on"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.Null(missingString); }
public async Task UsingEntitiesLambdaNewEventShouldCallFunction() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); var called = false; // ACT DefaultDaemonRxApp.Entities(n => n.EntityId.StartsWith("binary_sensor.pir", true, CultureInfo.InvariantCulture)) .StateChanges .Subscribe(_ => called = true); DefaultHassClientMock.AddChangedEvent("binary_sensor.pir_2", "off", "on"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.True(called); }
public async Task NDFirstOrTimeOutShouldReturnCorrectStateChange() { // ARRANGE using var waitFor = new CancellationTokenSource(300); await InitializeFakeDaemon().ConfigureAwait(false); var task = Task.Run(async() => { await Task.Delay(20).ConfigureAwait(false); DefaultHassClientMock.AddChangedEvent("binary_sensor.pir2", "on", "off"); }); var result = DefaultDaemonRxApp.Entity("binary_sensor.pir2").StateChanges.NDFirstOrTimeout(TimeSpan.FromMilliseconds(300)); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.NotNull(result); }
public async Task NDFirstOrTimeOutShouldReturnCorrectNullOnCancel() { // ARRANGE await InitializeFakeDaemon().ConfigureAwait(false); (EntityState Old, EntityState New)? result = null; using CancellationTokenSource _cancelSource = new(10); // ACT DefaultDaemonRxApp.Entity("binary_sensor.pir") .StateChanges .Subscribe(_ => result = DefaultDaemonRxApp.Entity("binary_sensor.pir2").StateChanges.NDFirstOrTimeout(TimeSpan.FromMilliseconds(300), _cancelSource.Token)); DefaultHassClientMock.AddChangedEvent("binary_sensor.pir", "off", "on"); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); // ASSERT Assert.Null(result); }
public async Task RunInShouldCallFunction() { // ARRANGE var called = false; await InitializeFakeDaemon().ConfigureAwait(false); // ACT DefaultDaemonRxApp.RunIn(TimeSpan.FromMilliseconds(100), () => called = true); // ASSERT Assert.False(called); await Task.Delay(150).ConfigureAwait(false); await RunFakeDaemonUntilTimeout().ConfigureAwait(false); Assert.True(called); }