public static void ClassStartup(TestContext testContext)
        {
            var cacheOptions = Microsoft.Extensions.Options.Options
                               .Create(new MemoryCacheOptions());

            RazorPageInfoFactory = new RazorPageInfoFactory(
                PATH_TO_RAZOR_PROJECT,
                new MemoryCache(cacheOptions));
        }
Example #2
0
        public override async Task <Project> Generate(
            Project originalProject,
            Project destinationProject,
            IProgress <CodeGenerationProgress> progress,
            CancellationToken cancellationToken)
        {
            originalProject = originalProject.AddRazorFiles();

            var memOptions = Microsoft.Extensions
                             .Options
                             .Options
                             .Create(new MemoryCacheOptions());

            var razorPageInfoFactory = new RazorPageInfoFactory(
                originalProject.FilePath,
                new MemoryCache(memOptions));

            var razorPages = razorPageInfoFactory.GenerateRazorInfoPages();
            var imports    = new[]
            {
                "ApertureLabs.Selenium",
                "ApertureLabs.Selenium.PageObjects",
                "OpenQA.Selenium",
                "OpenQA.Selenium.Support.Events",
                "OpenQA.Selenium.Support.PageObjects",
                "OpenQA.Selenium.Support.UI",
                "System",
                "System.Collections",
                "System.Collections.Generic"
            };

            foreach (var razorPage in razorPages)
            {
                var originalFile = originalProject.Documents.First(
                    d => d.FilePath.Equals(
                        razorPage.PhysicalPath,
                        StringComparison.Ordinal));

                destinationProject = GetOrCreateDocumentWithSameRelativePath(
                    originalFile,
                    destinationProject,
                    razorPage.GeneratedInterfaceName,
                    out var generatedInterfaceDoc,
                    out var interfaceRelativePath);

                destinationProject = await razorPageInfoFactory.GenerateInterfaceDocumentAsync(
                    imports,
                    razorPage,
                    generatedInterfaceDoc)
                                     .ConfigureAwait(false);

                destinationProject = GetOrCreateDocumentWithSameRelativePath(
                    originalFile,
                    destinationProject,
                    razorPage.GeneratedClassName,
                    out var generatedClassDoc,
                    out var classRelativePath);

                destinationProject = await razorPageInfoFactory.GeneratedClassDocumentAsync(
                    imports,
                    razorPage,
                    generatedClassDoc)
                                     .ConfigureAwait(false);
            }

            return(destinationProject);
        }