public async Task ActivateTriggerAsyncTest() { //Arrange LogEntry logEntry = null; var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntry = e; return(Task.FromResult(0)); } }; var cts = new CancellationTokenSource(); var tm = new TriggerRunner(log, new StubICommandProcessor(), new UnitTestDbConnection()); //Act await tm.ActivateTriggerAsync(0, cts.Token); //Assert Assert.IsTrue(logEntry == null); }
public async Task ActivateTriggerAsyncPath2Test() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "ActivateTriggerAsyncPath2Test" }; Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List<LogEntry>(); var ranstoredCommands = new List<int>(); //Arrange var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return Task.FromResult(0); } }; var commandProcessor = new StubICommandProcessor { RunCommandAsyncNullableOfInt32StringStringCancellationToken = ( commandId, argument, argument2, cancellationToken) => { if (commandId.HasValue) ranstoredCommands.Add(commandId.Value); return Task.FromResult(Result.ReportSuccess()); } }; Database.SetInitializer(new CreateFreshDbInitializer()); var cts = new CancellationTokenSource(); var triggerManager = new TriggerRunner(log, commandProcessor, dbConnection); await triggerManager.StartAsync(cts.Token); var cmd = new Command(); var dv = new DeviceValue { Value = "first value", ValueType = DataType.STRING, Triggers = new ObservableCollection<DeviceValueTrigger> { new DeviceValueTrigger { Name = "trigger1", IsEnabled = true, Operator = TriggerOperator.EqualTo, Value = "I changed!", Command=cmd } } }; var device = UnitTesting.CreateFakeDevice(); device.Values.Add(dv); using (var context = new ZvsContext(dbConnection)) { context.Devices.Add(device); var r = await context.TrySaveChangesAsync(cts.Token); Assert.IsFalse(r.HasError, r.Message); } //Act await triggerManager.ActivateTriggerAsync(dv.Id, cts.Token); await Task.Delay(700, cts.Token); //Assert Assert.IsTrue(logEntries.All(o => o.Level == LogEntryLevel.Info), "Expected only info type log entries"); Assert.IsTrue(ranstoredCommands.Count == 1, "Trigger runner did not run the correct amount of commands."); Assert.IsTrue(ranstoredCommands.All(o => o == cmd.Id), "Scheduled task runner did not run the correct command."); }
public async Task ActivateTriggerAsyncTest() { //Arrange LogEntry logEntry = null; var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntry = e; return Task.FromResult(0); } }; var cts = new CancellationTokenSource(); var tm = new TriggerRunner(log, new StubICommandProcessor(), new ZvsEntityContextConnection()); //Act await tm.ActivateTriggerAsync(0, cts.Token); //Assert Assert.IsTrue(logEntry == null); }
public async Task ActivateTriggerAsyncPath2Test() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List <LogEntry>(); var ranstoredCommands = new List <int>(); //Arrange var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return(Task.FromResult(0)); } }; var commandProcessor = new StubICommandProcessor { RunCommandAsyncNullableOfInt32StringStringCancellationToken = (commandId, argument, argument2, cancellationToken) => { if (commandId.HasValue) { ranstoredCommands.Add(commandId.Value); } return(Task.FromResult(Result.ReportSuccess())); } }; Database.SetInitializer(new CreateFreshDbInitializer()); var cts = new CancellationTokenSource(); var triggerManager = new TriggerRunner(log, commandProcessor, dbConnection); await triggerManager.StartAsync(cts.Token); var cmd = new Command(); var dv = new DeviceValue { Value = "first value", ValueType = DataType.STRING, Triggers = new ObservableCollection <DeviceValueTrigger> { new DeviceValueTrigger { Name = "trigger1", IsEnabled = true, Operator = TriggerOperator.EqualTo, Value = "I changed!", Command = cmd } } }; var device = UnitTesting.CreateFakeDevice(); device.Values.Add(dv); using (var context = new ZvsContext(dbConnection)) { context.Devices.Add(device); var r = await context.TrySaveChangesAsync(cts.Token); Assert.IsFalse(r.HasError, r.Message); } //Act await triggerManager.ActivateTriggerAsync(dv.Id, cts.Token); await Task.Delay(700, cts.Token); //Assert Assert.IsTrue(logEntries.All(o => o.Level == LogEntryLevel.Info), "Expected only info type log entries"); Assert.IsTrue(ranstoredCommands.Count == 1, "Trigger runner did not run the correct amount of commands."); Assert.IsTrue(ranstoredCommands.All(o => o == cmd.Id), "Scheduled task runner did not run the correct command."); }