public async static Task Main() { Log.LogEmitted += Log_LogEmitted; Log.Info("RulesBot started, press ^C to exit"); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; DIHost.Setup(); var mre = new ManualResetEvent(false); Console.CancelKeyPress += (s, e) => { e.Cancel = true; mre.Set(); }; ConfigurationHost.Initialize(); EnsureDirectories(); LogFile = PathUtils.MakeAbsolute("logs", $"log_{Program.Started:yyyyMMddHHmmss}.log"); var bot = DIHost.Get <DiscordBot>(); await bot.Start(); mre.WaitOne(); bot.Dispose(); Log.Info("RulesBot exited gracefully"); }
public static void Main(string[] args) { //Console.WriteLine("pid: " + Process.GetCurrentProcess().Id); //while (!Debugger.IsAttached) //{ // Thread.Sleep(1000); //} //Debugger.Break(); try { var arguments = new Arguments(args); DotvvmProjectMetadata dotvvmProjectMetadata = null; if (string.Equals(arguments[0], "--json", StringComparison.CurrentCultureIgnoreCase)) { dotvvmProjectMetadata = JsonConvert.DeserializeObject <DotvvmProjectMetadata>(args[1]); dotvvmProjectMetadata.WebAssemblyPath = dotvvmProjectMetadata.WebAssemblyPath.Replace(@"\\", @"\"); dotvvmProjectMetadata.ProjectDirectory = dotvvmProjectMetadata.ProjectDirectory.Replace(@"\\", @"\"); dotvvmProjectMetadata.MetadataFilePath = dotvvmProjectMetadata.MetadataFilePath.Replace(@"\\", @"\"); arguments.Consume(2); } else { Console.WriteLine(@"Provide correct metadata."); Environment.Exit(1); } ResolveTestProject(dotvvmProjectMetadata); CreatePageObjectsDirectory(dotvvmProjectMetadata.GetUITestProjectFullPath()); var config = ConfigurationHost.InitDotVVM(Assembly.LoadFile(dotvvmProjectMetadata.WebAssemblyPath), dotvvmProjectMetadata.ProjectDirectory, services => services.TryAddSingleton <IViewModelProtector, FakeViewModelProtector>()); // generate the test stubs GeneratePageObjects(dotvvmProjectMetadata, config, arguments); Console.WriteLine(@"#$ Exit 0 - DotVVM Selenium Generator Ended"); Environment.Exit(0); } catch (Exception e) { Console.WriteLine(@"#$ Exit 1 - DotVVM Selenium Generator Failed" + e); throw; } }
public async Task SimplePage_CheckGeneratedUiNames() { using (var workspace = new WebApplicationHost(TestContext, webAppDirectory)) { var processedFileContent = workspace.ProcessMarkupFile("Views/SimplePage/Page.dothtml"); // compile project workspace.FixReferencedProjectPath(proxiesCsProjPath); var compilation = await workspace.CompileAsync(); // verify the class compilation.AssertPageObject("SampleApp1.Tests.PageObjects.SimplePage", "PagePageObject"); // get dotvvm config var config = ConfigurationHost.InitDotVVM( Assembly.LoadFile(Path.Combine(Path.GetFullPath(webAppDirectory), "bin\\debug\\netcoreapp2.0\\SampleApp1.dll")), webAppDirectory, services => services.TryAddSingleton <IViewModelProtector, FakeViewModelProtector>()); // get abstract tree var tree = ResolveControlTree(processedFileContent, config); // get and check results var visitor = new UiNamesTestingVisitor(); GetControlsWithSelectors(tree, visitor); var results = visitor.GetResult(); Assert.AreEqual(results.Count, 12); AssertControlSelector((nameof(RadioButton), "Person"), results[0]); AssertControlSelector((nameof(RadioButton), "Company"), results[1]); AssertControlSelector((nameof(TextBox), "Name_FirstName"), results[2]); AssertControlSelector((nameof(TextBox), "Name_LastName"), results[3]); AssertControlSelector((nameof(Button), "Click"), results[4]); AssertControlSelector((nameof(TextBox), "Address"), results[5]); AssertControlSelector((nameof(CheckBox), "IsEuVatPayer"), results[6]); AssertControlSelector((nameof(ComboBox), "CountryCode"), results[7]); AssertControlSelector((nameof(Button), "CreateCompany"), results[8]); AssertControlSelector((nameof(LinkButton), "ResetForm"), results[9]); AssertControlSelector((nameof(Literal), "StatusMessage"), results[10]); AssertControlSelector((nameof(ValidationSummary), "ValidationSummary"), results[11]); } }
public async Task SimplePage_CheckDataContextDependingSelectors() { using (var workspace = new WebApplicationHost(TestContext, webAppDirectory)) { var processedFileContent = workspace.ProcessMarkupFile("Views/SimplePage/Page.dothtml"); // compile project workspace.FixReferencedProjectPath(proxiesCsProjPath); var compilation = await workspace.CompileAsync(); // verify the class compilation.AssertPageObject("SampleApp1.Tests.PageObjects.SimplePage", "PagePageObject"); // get dotvvm config var config = ConfigurationHost.InitDotVVM( Assembly.LoadFile(Path.Combine(Path.GetFullPath(webAppDirectory), "bin\\debug\\netcoreapp2.0\\SampleApp1.dll")), webAppDirectory, services => services.TryAddSingleton <IViewModelProtector, FakeViewModelProtector>()); // get abstract tree var tree = ResolveControlTree(processedFileContent, config); // traverse tree and get all controls with selectors AND dataContexts var visitor = new DataContextSelectorsTestingVisitor(); GetControlsWithSelectors(tree, visitor); var results = visitor.GetResult(); // check number of properties with dataContext prefix Assert.AreEqual(results.Count, 2); // check correctness of dataContext prefixes foreach (var result in results) { var split = result.Selector.Substring(0, result.Selector.LastIndexOf('_')); Assert.AreEqual(split, result.DataContext); } } }