public async Task GetZvsAdaptersTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback <LogEntry>(); var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0) }; var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act var result = adapterManager.GetZvsAdapters(); //assert Assert.IsTrue(result.Count() == 1, "Expected 1 adapter in the list"); }
public async Task RegisterAdapterSettingOptionAddedTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder(dbConnection, CancellationToken.None); var dbAdapter = UnitTesting.CreateFakeAdapter(); var adapterSetting = new AdapterSetting { Name = "Adapter Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbAdapter.Settings.Add(adapterSetting); var option1 = new AdapterSettingOption { Name = "Option 1", }; var option2 = new AdapterSettingOption { Name = "Option 2", }; adapterSetting.Options.Add(option1); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(dbAdapter); await context.SaveChangesAsync(); } var adapter = new StubUnitTestAdapter { AdapterGuidGet = () => dbAdapter.AdapterGuid }; adapterSetting.Options.Add(option2); //act var result = await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(adapterSetting, o => o.PropertyTest); AdapterSetting a; using (var context = new ZvsContext(dbConnection)) { a = await context.AdapterSettings .Include(o => o.Options) .FirstOrDefaultAsync(o => o.Id == adapterSetting.Id); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Options.Count == 2, "Expected 2 adapter setting options"); Assert.IsTrue(a.Options[1].Name == option2.Name, "Adapter option name mismatch"); }
public async Task TestPropertyUpdatingOnDatabaseSettingChange() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); return(Task.FromResult(0)); } }; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0), OnSettingsCreatingAdapterSettingBuilder = s => Task.FromResult(0), }; var adapter = new Adapter { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), Name = "Unit Testing Adapter", Description = "" }; adapter.Settings.Add(new AdapterSetting { UniqueIdentifier = "PropertyTest", Value = "2", ValueType = DataType.INTEGER }); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); await adapterManager.StartAsync(CancellationToken.None); //act using (var context = new ZvsContext(dbConnection)) { context.AdapterSettings.First().Value = "55"; await context.SaveChangesAsync(CancellationToken.None); } //assert Assert.IsTrue(unitTestingAdapter.PropertyTest == 55, "The property test property on the zvsAdapter did not properly update when the database value was changed."); }
public async Task StartTwiceTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List <LogEntry>(); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { logEntries.Add(e); Console.WriteLine(e.ToString()); return(Task.FromResult(0)); } }; var adapter = new Adapter() { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var isStartedCount = 0; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0), OnSettingsCreatingAdapterSettingBuilder = s => Task.FromResult(0), StartAsync01 = () => { isStartedCount++; return(Task.FromResult(0)); } }; var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Warn) == 1); Assert.IsTrue(isStartedCount == 1, "Adapter started too many or too few times"); }
public async Task RegisterAdapterSettingOnNonPropertyAdapterTest() { //Arrange Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder(new UnitTestDbConnection(), CancellationToken.None); var adapter = new StubUnitTestAdapter(); //act await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(new AdapterSetting(), o => o.FieldTest); //assert - throws }
public async Task RegisterAdapterSettingOnNonPropertyAdapterTest() { //Arrange Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder(new StubIEntityContextConnection(), CancellationToken.None); var adapter = new StubUnitTestAdapter(); //act await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(new AdapterSetting(), o => o.FieldTest); //assert - throws }
public async Task LoadAdaptersAsyncTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List <LogEntry>(); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return(Task.FromResult(0)); } }; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0) }; unitTestingAdapter.OnSettingsCreatingAdapterSettingBuilder = async settingBuilder => { var testSetting = new AdapterSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Adapter(unitTestingAdapter) .RegisterAdapterSettingAsync(testSetting, o => o.PropertyTest); }; var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error) == 0, "Expected 0 errors"); Assert.IsTrue(unitTestingAdapter.PropertyTest == 360, "Expected TestSetting property to be 360"); }
public async Task RegisterAdapterSettingNullAdapterTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "asb-RegisterAdapterSettingNullAdapterTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder( dbConnection, CancellationToken.None); var adapter = new StubUnitTestAdapter(); //act var result = await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(new AdapterSetting(), o => o.PropertyTest); //assert Console.WriteLine(result.Message); Assert.IsTrue(result.HasError); }
public async Task RegisterAdapterSettingValueDonestTriggerChangedTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder(dbConnection, CancellationToken.None); var dbAdapter = UnitTesting.CreateFakeAdapter(); var adapterSetting = new AdapterSetting { Name = "Adapter Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbAdapter.Settings.Add(adapterSetting); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(dbAdapter); await context.SaveChangesAsync(); } var adapter = new StubUnitTestAdapter { AdapterGuidGet = () => dbAdapter.AdapterGuid }; adapterSetting.Value = "New value!"; //act var result = await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(adapterSetting, o => o.PropertyTest); Adapter a; using (var context = new ZvsContext(dbConnection)) { a = await context.Adapters .Include(o => o.Settings) .FirstOrDefaultAsync(o => o.AdapterGuid == dbAdapter.AdapterGuid); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Settings.Count == 1, "Expected 1 adapter setting"); Assert.IsTrue(a.Settings[0].Value == "Hello World", "Adapter value changed when it shouldn't!"); }
public async Task RegisterAdapterSettingNullAdapterTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder(dbConnection, CancellationToken.None); var adapter = new StubUnitTestAdapter(); //act var result = await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(new AdapterSetting(), o => o.PropertyTest); //assert Console.WriteLine(result.Message); Assert.IsTrue(result.HasError); }
public async Task RegisterAdapterSettingAdapterTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "asb-RegisterAdapterSettingAdapterTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder(dbConnection, CancellationToken.None); var dbAdapter = UnitTesting.CreateFakeAdapter(); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(dbAdapter); await context.SaveChangesAsync(); } var adapter = new StubUnitTestAdapter { AdapterGuidGet = () => dbAdapter.AdapterGuid }; var adapterSetting = new AdapterSetting { Name = "Adapter Setting 1", ValueType = DataType.STRING, Value = "Hello World" }; //act var result = await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(adapterSetting, o => o.PropertyTest); Adapter a; using (var context = new ZvsContext(dbConnection)) { a = await context.Adapters .Include(o=> o.Settings) .FirstOrDefaultAsync(o => o.AdapterGuid == dbAdapter.AdapterGuid); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Settings.Count == 1, "Expected 1 adapter setting"); Assert.IsTrue(a.Settings[0].Name == adapterSetting.Name, "Adapter setting name mismatch"); }
public async Task DisableAdapterAsyncTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback <LogEntry>(); var hasStopped = false; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0), StopAsync01 = async() => hasStopped = true }; var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); var adapter = new Adapter { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), }; using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } //act var result = await adapterManager.DisableAdapterAsync(Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), CancellationToken.None); //assert Assert.IsFalse(result.HasError, result.Message); Assert.IsTrue(hasStopped, "Expected adapter StopAsync to be called."); }
public async Task FindZvsAdapterAsyncTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List <LogEntry>(); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return(Task.FromResult(0)); } }; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0), OnSettingsCreatingAdapterSettingBuilder = s => Task.FromResult(0), }; var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); await adapterManager.StartAsync(CancellationToken.None); //act var adapter = adapterManager.FindZvsAdapter(1); //assert Assert.IsNotNull(adapter, "Registered adapter not found!"); Assert.IsTrue(adapter.AdapterGuid == unitTestingAdapter.AdapterGuid, "Found wrong adapter!"); }
public async Task GetZvsAdaptersTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-GetZvsAdapters" }; Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback<LogEntry>(); var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = (s) => Task.FromResult(0) }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act var result = adapterManager.GetZvsAdapters(); //assert Assert.IsTrue(result.Count() == 1, "Expected 1 adapter in the list"); }
public async Task StopTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { logEntries.Add(e); Console.WriteLine(e.ToString()); return Task.FromResult(0); } }; var adapter = new Adapter() { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var isStartedCount = 0; var isStoppedCount = 0; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0), OnSettingsCreatingAdapterSettingBuilder = s => Task.FromResult(0), StartAsync01 = () => { isStartedCount++; return Task.FromResult(0); }, StopAsync01 = () => { isStoppedCount++; return Task.FromResult(0); } }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); await adapterManager.StopAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.All(o => o.Level == LogEntryLevel.Info), "Not all log entries are info level"); Assert.IsTrue(isStartedCount == 1, "Plugin started too many or too few times"); Assert.IsTrue(isStoppedCount == 1, "Plugin stopped too many or too few times"); }
public async Task LoadAdaptersAsyncBadPropertyTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List <LogEntry>(); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return(Task.FromResult(0)); } }; var badSettings = new AdapterSetting { Name = "Test setting2", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.STRING, Description = "Unit testing only", UniqueIdentifier = "NotExistantPropertyName" }; var adapter = new Adapter() { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), }; adapter.Settings.Add(badSettings); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0) }; unitTestingAdapter.OnSettingsCreatingAdapterSettingBuilder = async settingBuilder => { var testSetting = new AdapterSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Adapter(unitTestingAdapter) .RegisterAdapterSettingAsync(testSetting, o => o.PropertyTest); }; var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(unitTestingAdapter.PropertyTest == 360, "Expected TestSetting property to be 360"); Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error && o.Message.Contains("Cannot find property")) == 1, "Expected 1 Cannot find property error"); }
public async Task LoadAdaptersAsyncAutoStartTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); return(Task.FromResult(0)); } }; var adapter = new Adapter() { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var isStarted = false; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0), StartAsync01 = () => { isStarted = true; return(Task.FromResult(0)); } }; unitTestingAdapter.OnSettingsCreatingAdapterSettingBuilder = async settingBuilder => { var testSetting = new AdapterSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Adapter(unitTestingAdapter) .RegisterAdapterSettingAsync(testSetting, o => o.PropertyTest); }; var adapterManager = new AdapterManager(new List <ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(isStarted, "Adapter not started!"); }
public async Task LoadAdaptersInvalidCastAsyncTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return Task.FromResult(0); } }; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0) }; unitTestingAdapter.OnSettingsCreatingAdapterSettingBuilder = async settingBuilder => { var testSetting = new AdapterSetting { Name = "Test setting", Value = "abc", ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Adapter(unitTestingAdapter) .RegisterAdapterSettingAsync(testSetting, o => o.PropertyTest); }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error && o.Message.Contains("Cannot cast value")) == 1, "Expected 1 Cannot cast value on adapter setting error"); }
public async Task TestPropertyUpdatingOnDatabaseSettingChange() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-TestPropertyUpdatingOnDatabaseSettingChange" }; Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); return Task.FromResult(0); } }; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = (s) => Task.FromResult(0), OnSettingsCreatingAdapterSettingBuilder = (s) => Task.FromResult(0), }; var adapter = new Adapter { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), Name = "Unit Testing Adapter", Description = "" }; adapter.Settings.Add(new AdapterSetting { UniqueIdentifier = "PropertyTest", Value = "2", ValueType = DataType.INTEGER }); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); await adapterManager.StartAsync(CancellationToken.None); //act using (var context = new ZvsContext(dbConnection)) { context.AdapterSettings.First().Value = "55"; await context.SaveChangesAsync(CancellationToken.None); } //assert Assert.IsTrue(unitTestingAdapter.PropertyTest == 55, "The property test property on the zvsAdapter did not properly update when the database value was changed."); }
public async Task StopWhenNotStartedTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-StopWhenNotStartedTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { logEntries.Add(e); Console.WriteLine(e.ToString()); return Task.FromResult(0); } }; var adapter = new Adapter() { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = (s) => Task.FromResult(0) }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StopAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Warn) == 1); }
public async Task LoadAdaptersAsyncAutoStartTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-LoadAdaptersAsyncAutoStartTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); return Task.FromResult(0); } }; var adapter = new Adapter() { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var isStarted = false; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = (s) => Task.FromResult(0), StartAsync01 = () => { isStarted = true; return Task.FromResult(0); } }; unitTestingAdapter.OnSettingsCreatingAdapterSettingBuilder = async (settingBuilder) => { var testSetting = new AdapterSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Adapter(unitTestingAdapter) .RegisterAdapterSettingAsync(testSetting, o => o.PropertyTest); }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(isStarted, "Adapter not started!"); }
public async Task DisableAdapterAsyncTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-DisableAdapterAsyncTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback<LogEntry>(); var hasStopped = false; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = (s) => Task.FromResult(0), StopAsync01 = async () => hasStopped = true }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); var adapter = new Adapter { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), }; using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } //act var result = await adapterManager.DisableAdapterAsync(Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), CancellationToken.None); //assert Assert.IsFalse(result.HasError, result.Message); Assert.IsTrue(hasStopped, "Expected adapter StopAsync to be called."); }
public async Task RegisterAdapterSettingValueDonestTriggerChangedTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder( dbConnection, CancellationToken.None); var dbAdapter = UnitTesting.CreateFakeAdapter(); var adapterSetting = new AdapterSetting { Name = "Adapter Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbAdapter.Settings.Add(adapterSetting); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(dbAdapter); await context.SaveChangesAsync(); } var adapter = new StubUnitTestAdapter { AdapterGuidGet = () => dbAdapter.AdapterGuid }; adapterSetting.Value = "New value!"; //act var result = await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(adapterSetting, o => o.PropertyTest); Adapter a; using (var context = new ZvsContext(dbConnection)) { a = await context.Adapters .Include(o => o.Settings) .FirstOrDefaultAsync(o => o.AdapterGuid == dbAdapter.AdapterGuid); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Settings.Count == 1, "Expected 1 adapter setting"); Assert.IsTrue(a.Settings[0].Value == "Hello World", "Adapter value changed when it shouldn't!"); }
public async Task FindZvsAdapterAsyncTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-FindZvsAdapterAsyncTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return Task.FromResult(0); } }; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = (s) => Task.FromResult(0), OnSettingsCreatingAdapterSettingBuilder = (s) => Task.FromResult(0), }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); await adapterManager.StartAsync(CancellationToken.None); //act var adapter = adapterManager.FindZvsAdapter(1); //assert Assert.IsNotNull(adapter, "Registered adapter not found!"); Assert.IsTrue(adapter.AdapterGuid == unitTestingAdapter.AdapterGuid, "Found wrong adapter!"); }
public async Task RegisterAdapterSettingOptionRemovedTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var adapterBuilder = new AdapterSettingBuilder( dbConnection, CancellationToken.None); var dbAdapter = UnitTesting.CreateFakeAdapter(); var adapterSetting = new AdapterSetting { Name = "Adapter Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbAdapter.Settings.Add(adapterSetting); var option1 = new AdapterSettingOption { Name = "Option 1", }; var option2 = new AdapterSettingOption { Name = "Option 2", }; adapterSetting.Options.Add(option1); adapterSetting.Options.Add(option2); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(dbAdapter); await context.SaveChangesAsync(); } var adapter = new StubUnitTestAdapter { AdapterGuidGet = () => dbAdapter.AdapterGuid }; adapterSetting.Options.Remove(option2); //act var result = await adapterBuilder.Adapter(adapter).RegisterAdapterSettingAsync(adapterSetting, o => o.PropertyTest); AdapterSetting a; using (var context = new ZvsContext(dbConnection)) { a = await context.AdapterSettings .Include(o => o.Options) .FirstOrDefaultAsync(o => o.Id == adapterSetting.Id); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Options.Count == 1, "Expected 2 adapter setting options"); Assert.IsTrue(a.Options[0].Name == option1.Name, "Adapter option name mismatch"); }
public async Task LoadAdaptersAsyncTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-LoadAdaptersAsyncTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return Task.FromResult(0); } }; var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = (s) => Task.FromResult(0) }; unitTestingAdapter.OnSettingsCreatingAdapterSettingBuilder = async (settingBuilder) => { var testSetting = new AdapterSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Adapter(unitTestingAdapter) .RegisterAdapterSettingAsync(testSetting, o => o.PropertyTest); }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error) == 0, "Expected 0 errors"); Assert.IsTrue(unitTestingAdapter.PropertyTest == 360, "Expected TestSetting property to be 360"); }
public async Task LoadAdaptersAsyncBadPropertyTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return Task.FromResult(0); } }; var badSettings = new AdapterSetting { Name = "Test setting2", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.STRING, Description = "Unit testing only", UniqueIdentifier = "NotExistantPropertyName" }; var adapter = new Adapter() { AdapterGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), }; adapter.Settings.Add(badSettings); using (var context = new ZvsContext(dbConnection)) { context.Adapters.Add(adapter); await context.SaveChangesAsync(CancellationToken.None); } var unitTestingAdapter = new StubUnitTestAdapter { AdapterGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Adapter", DescriptionGet = () => "", OnDeviceTypesCreatingDeviceTypeBuilder = s => Task.FromResult(0) }; unitTestingAdapter.OnSettingsCreatingAdapterSettingBuilder = async settingBuilder => { var testSetting = new AdapterSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Adapter(unitTestingAdapter) .RegisterAdapterSettingAsync(testSetting, o => o.PropertyTest); }; var adapterManager = new AdapterManager(new List<ZvsAdapter> { unitTestingAdapter }, dbConnection, log); //act await adapterManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(unitTestingAdapter.PropertyTest == 360, "Expected TestSetting property to be 360"); Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error && o.Message.Contains("Cannot find property")) == 1, "Expected 1 Cannot find property error"); }