public async Task SetPluginPropertyCastPropertyTest() { //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 unitTestingPlugin = new StubUnitTestPlugin(); var pluginManager = new PluginManager(new List <ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.SetPluginProperty(unitTestingPlugin, "PropertyTest", "abc", CancellationToken.None); //assert Assert.IsTrue(unitTestingPlugin.PropertyTest == 0, "Expected TestSetting property to be 0"); Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error && o.Message.Contains("Cannot cast value")) == 1, "Expected 1 cannot cast value on plugin setting error"); }
public async Task GetZvsPluginsTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback <LogEntry>(); var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0) }; var pluginManager = new PluginManager(new List <ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act var result = pluginManager.GetZvsPlugins(); //assert Assert.IsTrue(result.Count() == 1, "Expected 1 plugin in the list"); }
public async Task RegisterPluginSettingOptionAddedTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder(dbConnection, CancellationToken.None); var dbPlugin = UnitTesting.CreateFakePlugin(); var pluginSetting = new PluginSetting { Name = "Plugin Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbPlugin.Settings.Add(pluginSetting); var option1 = new PluginSettingOption { Name = "Option 1", }; var option2 = new PluginSettingOption { Name = "Option 2", }; pluginSetting.Options.Add(option1); using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(dbPlugin); await context.SaveChangesAsync(); } var plugin = new StubUnitTestPlugin { PluginGuidGet = () => dbPlugin.PluginGuid }; pluginSetting.Options.Add(option2); //act var result = await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(pluginSetting, o => o.PropertyTest); PluginSetting a; using (var context = new ZvsContext(dbConnection)) { a = await context.PluginSettings .Include(o => o.Options) .FirstOrDefaultAsync(o => o.Id == pluginSetting.Id); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Options.Count == 2, "Expected 2 plugin setting options"); Assert.IsTrue(a.Options[1].Name == option2.Name, "Plugin 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 unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0), }; var plugin = new Plugin { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), Name = "Unit Testing Plugin", Description = "" }; plugin.Settings.Add(new PluginSetting { UniqueIdentifier = "PropertyTest", Value = "2", ValueType = DataType.INTEGER }); using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } var pluginManager = new PluginManager(new List <ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); await pluginManager.StartAsync(CancellationToken.None); //act using (var context = new ZvsContext(dbConnection)) { context.PluginSettings.First().Value = "55"; await context.SaveChangesAsync(CancellationToken.None); } //assert Assert.IsTrue(unitTestingPlugin.PropertyTest == 55, "The property test property on the zvsPlugin did not properly update when the database value was changed."); }
public async Task RegisterPluginSettingOnNonPropertyPluginTest() { //Arrange Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder(new UnitTestDbConnection(), CancellationToken.None); var plugin = new StubUnitTestPlugin(); //act await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(new PluginSetting(), o => o.FieldTest); //assert - throws }
public async Task RegisterPluginSettingNullPluginTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder( dbConnection, CancellationToken.None); var plugin = new StubUnitTestPlugin(); //act var result = await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(new PluginSetting(), o => o.PropertyTest); //assert Console.WriteLine(result.Message); Assert.IsTrue(result.HasError); }
public async Task StopWhenNotStartedTest() { //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 plugin = new Plugin() { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0) }; var pluginManager = new PluginManager(new List <ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.StopAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Warn) == 1); }
public async Task RegisterPluginSettingValueDonestTriggerChangedTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder(dbConnection, CancellationToken.None); var dbPlugin = UnitTesting.CreateFakePlugin(); var pluginSetting = new PluginSetting { Name = "Plugin Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbPlugin.Settings.Add(pluginSetting); using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(dbPlugin); await context.SaveChangesAsync(); } var plugin = new StubUnitTestPlugin { PluginGuidGet = () => dbPlugin.PluginGuid }; pluginSetting.Value = "New value!"; //act var result = await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(pluginSetting, o => o.PropertyTest); Plugin a; using (var context = new ZvsContext(dbConnection)) { a = await context.Plugins .Include(o => o.Settings) .FirstOrDefaultAsync(o => o.PluginGuid == dbPlugin.PluginGuid); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Settings.Count == 1, "Expected 1 plugin setting"); Assert.IsTrue(a.Settings[0].Value == "Hello World", "Plugin value changed when it shouldn't!"); }
public async Task RegisterPluginSettingNullPluginTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder(dbConnection, CancellationToken.None); var plugin = new StubUnitTestPlugin(); //act var result = await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(new PluginSetting(), o => o.PropertyTest); //assert Console.WriteLine(result.Message); Assert.IsTrue(result.HasError); }
public async Task DisablePluginAsyncTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback <LogEntry>(); var hasStopped = false; var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0), StopAsync01 = async() => hasStopped = true }; var pluginManager = new PluginManager(new List <ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); var plugin = new Plugin { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), }; using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } //act var result = await pluginManager.DisablePluginAsync(Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), CancellationToken.None); //assert Assert.IsFalse(result.HasError, result.Message); Assert.IsTrue(hasStopped, "Expected plugin StopAsync to be called."); }
public async Task RegisterPluginSettingPluginTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder(dbConnection, CancellationToken.None); var dbPlugin = UnitTesting.CreateFakePlugin(); using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(dbPlugin); await context.SaveChangesAsync(); } var plugin = new StubUnitTestPlugin { PluginGuidGet = () => dbPlugin.PluginGuid }; var pluginSetting = new PluginSetting { Name = "Plugin Setting 1", ValueType = DataType.STRING, Value = "Hello World" }; //act var result = await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(pluginSetting, o => o.PropertyTest); Plugin a; using (var context = new ZvsContext(dbConnection)) { a = await context.Plugins .Include(o=> o.Settings) .FirstOrDefaultAsync(o => o.PluginGuid == dbPlugin.PluginGuid); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Settings.Count == 1, "Expected 1 plugin setting"); Assert.IsTrue(a.Settings[0].Name == pluginSetting.Name, "Plugin setting name mismatch"); }
public async Task FindZvsPluginAsyncTest() { //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 unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0) }; var pluginManager = new PluginManager(new List <ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); await pluginManager.StartAsync(CancellationToken.None); //act var plugin = pluginManager.FindZvsPlugin(1); //assert Assert.IsNotNull(plugin, "Registered plugin not found!"); Assert.IsTrue(plugin.PluginGuid == unitTestingPlugin.PluginGuid, "Found wrong plugin!"); }
public async Task FindZvsPluginAsyncTest() { //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 unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0) }; var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); await pluginManager.StartAsync(CancellationToken.None); //act var plugin = pluginManager.FindZvsPlugin(1); //assert Assert.IsNotNull(plugin, "Registered plugin not found!"); Assert.IsTrue(plugin.PluginGuid == unitTestingPlugin.PluginGuid, "Found wrong plugin!"); }
public async Task SetPluginPropertyTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-SetPluginPropertyTest" }; 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 unitTestingPlugin = new StubUnitTestPlugin(); var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.SetPluginProperty(unitTestingPlugin, "PropertyTest", "360", CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error) == 0, "Expected 0 errors"); Assert.IsTrue(unitTestingPlugin.PropertyTest == 360, "Expected TestSetting property to be 360"); }
public async Task StopTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "am-StopTest" }; 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 plugin = new Plugin() { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } var isStartedCount = 0; var isStoppedCount = 0; var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = (s) => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = (s) => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = (s) => Task.FromResult(0), StartAsync01 = () => { isStartedCount++; return Task.FromResult(0); }, StopAsync01 = () => { isStoppedCount++; return Task.FromResult(0); } }; unitTestingPlugin.OnSettingsCreatingPluginSettingBuilder = async (settingBuilder) => { var testSetting = new PluginSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Plugin(unitTestingPlugin) .RegisterPluginSettingAsync(testSetting, o => o.PropertyTest); }; var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.StartAsync(CancellationToken.None); await pluginManager.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 RegisterPluginSettingValueDonestTriggerChangedTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "asb-RegisterPluginSettingValueDonestTriggerChangedTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder( dbConnection, CancellationToken.None); var dbPlugin = UnitTesting.CreateFakePlugin(); var pluginSetting = new PluginSetting { Name = "Plugin Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbPlugin.Settings.Add(pluginSetting); using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(dbPlugin); await context.SaveChangesAsync(); } var plugin = new StubUnitTestPlugin { PluginGuidGet = () => dbPlugin.PluginGuid }; pluginSetting.Value = "New value!"; //act var result = await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(pluginSetting, o => o.PropertyTest); Plugin a; using (var context = new ZvsContext(dbConnection)) { a = await context.Plugins .Include(o => o.Settings) .FirstOrDefaultAsync(o => o.PluginGuid == dbPlugin.PluginGuid); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Settings.Count == 1, "Expected 1 plugin setting"); Assert.IsTrue(a.Settings[0].Value == "Hello World", "Plugin value changed when it shouldn't!"); }
public async Task LoadPluginsAsyncAutoStartTest() { //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 plugin = new Plugin() { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } var isStarted = false; var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0), StartAsync01 = () => { isStarted = true; return(Task.FromResult(0)); } }; unitTestingPlugin.OnSettingsCreatingPluginSettingBuilder = async settingBuilder => { var testSetting = new PluginSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Plugin(unitTestingPlugin) .RegisterPluginSettingAsync(testSetting, o => o.PropertyTest); }; var pluginManager = new PluginManager(new List <ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(isStarted, "Plugin not started!"); }
public async Task GetZvsPluginsTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback<LogEntry>(); var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0) }; var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act var result = pluginManager.GetZvsPlugins(); //assert Assert.IsTrue(result.Count() == 1, "Expected 1 plugin in the list"); }
public async Task RegisterPluginSettingOptionRemovedTest() { //Arrange var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "asb-RegisterPluginSettingOptionRemovedTest" }; Database.SetInitializer(new CreateFreshDbInitializer()); var pluginBuilder = new PluginSettingBuilder( dbConnection, CancellationToken.None); var dbPlugin = UnitTesting.CreateFakePlugin(); var pluginSetting = new PluginSetting { Name = "Plugin Setting 1", ValueType = DataType.STRING, Value = "Hello World", UniqueIdentifier = "PropertyTest" }; dbPlugin.Settings.Add(pluginSetting); var option1 = new PluginSettingOption { Name = "Option 1", }; var option2 = new PluginSettingOption { Name = "Option 2", }; pluginSetting.Options.Add(option1); pluginSetting.Options.Add(option2); using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(dbPlugin); await context.SaveChangesAsync(); } var plugin = new StubUnitTestPlugin { PluginGuidGet = () => dbPlugin.PluginGuid }; pluginSetting.Options.Remove(option2); //act var result = await pluginBuilder.Plugin(plugin).RegisterPluginSettingAsync(pluginSetting, o => o.PropertyTest); PluginSetting a; using (var context = new ZvsContext(dbConnection)) { a = await context.PluginSettings .Include(o => o.Options) .FirstOrDefaultAsync(o => o.Id == pluginSetting.Id); } //assert Console.WriteLine(result.Message); Assert.IsFalse(result.HasError); Assert.IsTrue(a.Options.Count == 1, "Expected 2 plugin setting options"); Assert.IsTrue(a.Options[0].Name == option1.Name, "Plugin option name mismatch"); }
public async Task SetPluginPropertyCastPropertyTest() { //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 unitTestingPlugin = new StubUnitTestPlugin(); var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.SetPluginProperty(unitTestingPlugin, "PropertyTest", "abc", CancellationToken.None); //assert Assert.IsTrue(unitTestingPlugin.PropertyTest == 0, "Expected TestSetting property to be 0"); Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Error && o.Message.Contains("Cannot cast value")) == 1, "Expected 1 cannot cast value on plugin setting error"); }
public async Task StopWhenNotStartedTest() { //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 plugin = new Plugin() { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0) }; var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.StopAsync(CancellationToken.None); //assert Assert.IsTrue(logEntries.Count(o => o.Level == LogEntryLevel.Warn) == 1); }
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 unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0), }; var plugin = new Plugin { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), Name = "Unit Testing Plugin", Description = "" }; plugin.Settings.Add(new PluginSetting { UniqueIdentifier = "PropertyTest", Value = "2", ValueType = DataType.INTEGER }); using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); await pluginManager.StartAsync(CancellationToken.None); //act using (var context = new ZvsContext(dbConnection)) { context.PluginSettings.First().Value = "55"; await context.SaveChangesAsync(CancellationToken.None); } //assert Assert.IsTrue(unitTestingPlugin.PropertyTest == 55, "The property test property on the zvsPlugin did not properly update when the database value was changed."); }
public async Task LoadPluginsAsyncAutoStartTest() { //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 plugin = new Plugin() { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), IsEnabled = true }; using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } var isStarted = false; var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0), StartAsync01 = () => { isStarted = true; return Task.FromResult(0); } }; unitTestingPlugin.OnSettingsCreatingPluginSettingBuilder = async settingBuilder => { var testSetting = new PluginSetting { Name = "Test setting", Value = 360.ToString(CultureInfo.InvariantCulture), ValueType = DataType.INTEGER, Description = "Unit testing only" }; await settingBuilder.Plugin(unitTestingPlugin) .RegisterPluginSettingAsync(testSetting, o => o.PropertyTest); }; var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); //act await pluginManager.StartAsync(CancellationToken.None); //assert Assert.IsTrue(isStarted, "Plugin not started!"); }
public async Task DisablePluginAsyncTest() { //Arrange var dbConnection = new UnitTestDbConnection(); Database.SetInitializer(new CreateFreshDbInitializer()); var log = new StubIFeedback<LogEntry>(); var hasStopped = false; var unitTestingPlugin = new StubUnitTestPlugin { PluginGuidGet = () => Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), NameGet = () => "Unit Testing Plugin", DescriptionGet = () => "", OnSettingsCreatingPluginSettingBuilder = s => Task.FromResult(0), OnDeviceSettingsCreatingDeviceSettingBuilder = s => Task.FromResult(0), OnSceneSettingsCreatingSceneSettingBuilder = s => Task.FromResult(0), StopAsync01 = async () => hasStopped = true }; var pluginManager = new PluginManager(new List<ZvsPlugin> { unitTestingPlugin }, dbConnection, log, new StubIAdapterManager()); var plugin = new Plugin { PluginGuid = Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), }; using (var context = new ZvsContext(dbConnection)) { context.Plugins.Add(plugin); await context.SaveChangesAsync(CancellationToken.None); } //act var result = await pluginManager.DisablePluginAsync(Guid.Parse("a0f912a6-b8bb-406a-360f-1eb13f50aae4"), CancellationToken.None); //assert Assert.IsFalse(result.HasError, result.Message); Assert.IsTrue(hasStopped, "Expected plugin StopAsync to be called."); }