Esempio n. 1
0
        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);
                }
            }
        }