コード例 #1
0
        public IEnumerable <JSTest> RunTests(string jsFilePath, BrowserSetUp browserSetUp)
        {
            var filesBeingTested =
                new List <string> {
                "*.htm", "*.html"
            }.SelectMany(
                filter => Directory.EnumerateFiles(jsFilePath, filter, SearchOption.AllDirectories));

            foreach (string fileBeingTested in filesBeingTested)
            {
                string url     = fileBeingTested;
                var    actions = UITestRunner.InitializeWorkFlowContainer(
                    b => b.ElementsOfType <ListItem>()
                    .Where(x => x.InnerHtml.StartsWith("<strong>"))
                    .ForEach(x => GetJSTestSummary(x, url)));

                var list = new List <Action <Browser> >
                {
                    (b => b.GoTo(url)),
                    (b => b.WaitForComplete()),
                };
                if (actions != null)
                {
                    list.AddRange(actions);
                }

                var notification = new TestRunner(new BrowserProvider(browserSetUp), browserSetUp).PassesTest(list) ??
                                   new Notification();

                Assert.True(notification.Success, notification.ToString());
            }
            return(_jSTests);
        }
コード例 #2
0
        internal void ModelFirstVerifierRunner(string csdlArtifactName, Version versionOfCsdl)
        {
            UITestRunner.Execute(TestContext.TestName,
                                 () =>
            {
                var workflowFilePath = Path.Combine(
                    VsUtils.GetVisualStudioInstallDir(),
                    @"Extensions\Microsoft\Entity Framework Tools\DBGen\TablePerTypeStrategy.xaml");

                EdmItemCollection edmItemCollection;
                using (
                    var csdlStream =
                        TestUtils.GetEmbeddedResourceStream("EFDesigner.InProcTests.TestData." + csdlArtifactName + ".csdl"))
                {
                    edmItemCollection = new EdmItemCollection(new[] { XmlReader.Create(csdlStream) });
                }

                var testName = "ModelFirstVerifier_" + csdlArtifactName;

                TestPipeline(
                    testName, edmItemCollection, workflowFilePath, versionOfCsdl,
                    args =>
                {
                    // Aggregate the inputs and outputs
                    var ssdlOutput = (string)args.Outputs[EdmConstants.ssdlOutputName];
                    var mslOutput  = (string)args.Outputs[EdmConstants.mslOutputName];

                    var storeItemCollection =
                        EdmExtension.CreateAndValidateStoreItemCollection(
                            ssdlOutput,
                            EntityFrameworkVersion.Version2,
                            new LegacyDbProviderServicesResolver(),
                            false);

                    // First we need to validate the MSL (the SSDL has already been validated
                    // otherwise the SSDL to DDL step would have failed)
                    new StorageMappingItemCollection(
                        edmItemCollection,
                        storeItemCollection,
                        new[] { XmlReader.Create(new StringReader(mslOutput)) });

                    var sb = new StringBuilder(
                        new XElement(
                            "StorageAndMappings",
                            XElement.Parse(ssdlOutput, LoadOptions.PreserveWhitespace),
                            new XText(Environment.NewLine + Environment.NewLine),
                            new XComment("Finished generating the storage layer. Here are the mappings:"),
                            new XText(Environment.NewLine + Environment.NewLine),
                            XElement.Parse(mslOutput, LoadOptions.PreserveWhitespace)).ToString());

                    // Enable the following when we can get the template to run InProc
                    sb.AppendLine().AppendLine().AppendLine("The generated DDL:");
                    sb.AppendLine(ScrubDdl((string)args.Outputs[EdmConstants.ddlOutputName]));

                    return(sb.ToString());
                });
            });
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: ADThomsen/UITest
        static void Main(string[] args)
        {
            var uiTestRunner = new UITestRunner();

            uiTestRunner.Configuration.Config.Options.Verbose = true;
            uiTestRunner
            .UseBaseUrl("https://google.com")
            .UseChrome()
            .RunFromAssemblyOf <Program>();
        }
コード例 #4
0
        private void RefactorRenameTest(string projectName, Action <EntityDesignArtifact, CommandProcessorContext, object> test)
        {
            var modelEdmxFilePath = Path.Combine(TestContext.DeploymentDirectory, @"TestData\Model\v3\PubSimple.edmx");
            var dte             = VsIdeTestHostContext.Dte;
            var serviceProvider = VsIdeTestHostContext.ServiceProvider;

            UITestRunner.Execute(
                () =>
            {
                EntityDesignArtifact entityDesignArtifact = null;
                try
                {
                    var project = dte.CreateProject(
                        TestContext.TestRunDirectory,
                        projectName,
                        DteExtensions.ProjectKind.Executable,
                        DteExtensions.ProjectLanguage.CSharp);

                    var projectItem = dte.AddExistingItem(new FileInfo(modelEdmxFilePath).FullName, project);
                    dte.OpenFile(projectItem.FileNames[0]);
                    entityDesignArtifact =
                        (EntityDesignArtifact) new EFArtifactHelper(EFArtifactHelper.GetEntityDesignModelManager(serviceProvider))
                        .GetNewOrExistingArtifact(TestUtils.FileName2Uri(projectItem.FileNames[0]));

                    var editingContext =
                        _package.DocumentFrameMgr.EditingContextManager.GetNewOrExistingContext(entityDesignArtifact.Uri);
                    var cpc = new CommandProcessorContext(
                        editingContext, "DiagramTest" + projectName, "DiagramTestTxn" + projectName, entityDesignArtifact);

                    var programDocData = VSHelpers.GetDocData(
                        serviceProvider, Path.Combine(Path.GetDirectoryName(project.FullName), "Program.cs"));
                    Debug.Assert(programDocData != null, "Could not get DocData for program file");

                    var textLines = VSHelpers.GetVsTextLinesFromDocData(programDocData);
                    Debug.Assert(textLines != null, "Could not get VsTextLines for program DocData");

                    VsUtils.SetTextForVsTextLines(textLines, string.Format(PubSimpleProgramText, projectName));
                    test(entityDesignArtifact, cpc, programDocData);
                }
                catch (Exception ex)
                {
                    TestContext.WriteLine(ex.ToString());
                    throw;
                }
                finally
                {
                    if (entityDesignArtifact != null)
                    {
                        entityDesignArtifact.Dispose();
                    }

                    dte.CloseSolution(false);
                }
            });
        }
コード例 #5
0
 public void FindDbContextTemplate_finds_the_EF5_VB_web_site_template_when_targeting_dotNET4_5_web_site_with_VB()
 {
     UITestRunner.Execute(
         () =>
     {
         var proj           = CreateWebSiteProject("DbContextVBNet45Web", "4.5", "VisualBasic");
         var dbCtxGenerator = new DbContextCodeGenerator();
         var ctxTemplate    = dbCtxGenerator.FindDbContextTemplate(proj);
         Assert.IsTrue(ctxTemplate.EndsWith(@"DbCtxVBWSEF5\DbContext_VB_WS_V5.0.vstemplate"));
     });
 }
コード例 #6
0
 public void FindDbContextTemplate_finds_the_EF5_CSharp_template_when_targeting_dotNET4_5_with_CSharp()
 {
     UITestRunner.Execute(
         () =>
     {
         var proj           = CreateProject("DbContextCSharpNet45", "4.5", "CSharp");
         var dbCtxGenerator = new DbContextCodeGenerator();
         var ctxTemplate    = dbCtxGenerator.FindDbContextTemplate(proj);
         Assert.IsTrue(ctxTemplate.EndsWith(@"DbCtxCSEF5\DbContext_CS_V5.0.vstemplate"));
     });
 }
コード例 #7
0
        private void ChangeEntityTypesFillColorTest(
            string projectName, Color fillColor, Action <EntityDesignArtifact, CommandProcessorContext> runTest)
        {
            var modelPath = Path.Combine(TestContext.DeploymentDirectory, @"TestData\Model\v3\PubSimple.edmx");

            UITestRunner.Execute(TestContext.TestName,
                                 () =>
            {
                EntityDesignArtifact entityDesignArtifact = null;
                Project project = null;
                try
                {
                    project = Dte.CreateProject(
                        TestContext.TestRunDirectory,
                        projectName,
                        DteExtensions.ProjectKind.Executable,
                        DteExtensions.ProjectLanguage.CSharp);

                    var projectItem = Dte.AddExistingItem(modelPath, project);
                    Dte.OpenFile(projectItem.FileNames[0]);

                    entityDesignArtifact =
                        (EntityDesignArtifact) new EFArtifactHelper(EFArtifactHelper.GetEntityDesignModelManager(ServiceProvider))
                        .GetNewOrExistingArtifact(TestUtils.FileName2Uri(projectItem.FileNames[0]));

                    var editingContext =
                        _package.DocumentFrameMgr.EditingContextManager.GetNewOrExistingContext(entityDesignArtifact.Uri);
                    var commandProcessorContext = new CommandProcessorContext(
                        editingContext, "DiagramTest", "DiagramTestTxn", entityDesignArtifact);

                    foreach (var ets in entityDesignArtifact.DesignerInfo.Diagrams.FirstDiagram.EntityTypeShapes)
                    {
                        CommandProcessor.InvokeSingleCommand(
                            commandProcessorContext, new UpdateDefaultableValueCommand <Color>(ets.FillColor, fillColor));
                    }

                    runTest(entityDesignArtifact, commandProcessorContext);
                }
                finally
                {
                    if (entityDesignArtifact != null)
                    {
                        entityDesignArtifact.Dispose();
                    }

                    if (project != null)
                    {
                        Dte.CloseSolution(false);
                    }
                }
            });
        }
コード例 #8
0
        public void FindDbContextTemplate_finds_the_EF6_CSharp_template()
        {
            UITestRunner.Execute(
                () =>
            {
                var project   = CreateProject("DbContextCSharpNet45EF6", "4.5", "CSharp");
                var generator = new DbContextCodeGenerator();

                var template = generator.FindDbContextTemplate(project, useLegacyTemplate: false);

                StringAssert.EndsWith(template, @"DbCtxCSEF6\DbContext_CS_V6.0.vstemplate");
            });
        }
コード例 #9
0
        public void FindDbContextTemplate_finds_the_EF6_VB_web_site_template()
        {
            UITestRunner.Execute(
                () =>
            {
                var project   = CreateWebSiteProject("DbContextVBNet45WebEF6", "4.5", "VisualBasic");
                var generator = new DbContextCodeGenerator();

                var template = generator.FindDbContextTemplate(project, useLegacyTemplate: false);

                StringAssert.EndsWith(template, @"DbCtxVBWSEF6\DbContext_VB_WS_V6.0.vstemplate");
            });
        }
コード例 #10
0
        public void AddDbContextTemplates_does_not_add_the_template_items_to_the_item_collection_when_targeting_dotNET3_5()
        {
            UITestRunner.Execute(
                () =>
            {
                var project  = CreateProject("TemplatesNet35", "3.5", "VisualBasic");
                var edmxItem = project.ProjectItems.AddFromFileCopy(ModelEdmxFilePath);

                new DbContextCodeGenerator().AddDbContextTemplates(edmxItem);

                Assert.IsFalse(project.ProjectItems.OfType <ProjectItem>().Any(i => i.Name == "Simple.tt"));
                Assert.IsFalse(project.ProjectItems.OfType <ProjectItem>().Any(i => i.Name == "Simple.Context.tt"));
            });
        }
コード例 #11
0
        public void AddDbContextTemplates_does_not_add_the_template_items_when_the_templates_are_not_installed()
        {
            UITestRunner.Execute(
                () =>
            {
                var project = CreateProject("NoDbContextTemplates", "3.5", "VisualBasic");
                project.ProjectItems.AddFromFileCopy(ModelEdmxFilePath);
                var edmxItem = project.ProjectItems.OfType <ProjectItem>().Single(i => i.Name == "Simple.edmx");

                new DbContextCodeGenerator("FakeDbCtx{0}{1}EF5.zip").AddDbContextTemplates(edmxItem);

                Assert.IsFalse(project.ProjectItems.OfType <ProjectItem>().Any(i => i.Name == "Simple.tt"));
                Assert.IsFalse(project.ProjectItems.OfType <ProjectItem>().Any(i => i.Name == "Simple.Context.tt"));
            });
        }
コード例 #12
0
        public void SQLCETest()
        {
            UITestRunner.Execute(TestContext.TestName,
                                 () =>
            {
                var sqlCeInputs = new Dictionary <string, object>
                {
                    {
                        "SsdlInput",
                        TestUtils.LoadEmbeddedResource("EFDesigner.InProcTests.TestData.AssocBetSubtypesV2SQLCE40.ssdl")
                    },
                    {
                        "ExistingSsdlInput",
                        TestUtils.LoadEmbeddedResource(
                            "EFDesigner.InProcTests.TestData.AssocBetSubtypesV2SQLCE40_Existing.ssdl")
                    },
                    {
                        "TemplatePath",
                        @"$(VSEFTools)\DBGen\SSDLToSQL10.tt"
                    }
                };

                var sqlCeParameterBag = new EdmParameterBag(
                    null,
                    null,
                    EntityFrameworkVersion.Version2,
                    "System.Data.SqlServerCe.4.0",
                    "4.0",
                    null,
                    "dbo",
                    "TestDb",
                    @"$(VSEFTools)\DBGen\SSDLToSQL10.tt",
                    @"D:\Foo\Blah\t3est.edmx");

                var outputs = InvokeWorkflowActivity <SsdlToDdlActivity>(sqlCeInputs, sqlCeParameterBag);
                object ddlObj;
                if (outputs.TryGetValue("DdlOutput", out ddlObj))
                {
                    Assert.AreEqual(
                        TestUtils.LoadEmbeddedResource("EFDesigner.InProcTests.Baselines.WorkflowActivityTests_SQLCETest.bsl"),
                        ScrubSQLCEDDL((string)ddlObj));
                }
                else
                {
                    Assert.Fail("Could not find DDL output from SSDL to DDL activity for SQL CE");
                }
            });
        }
コード例 #13
0
        public void AddDbContextTemplates_is_noop_when_called_more_than_once()
        {
            UITestRunner.Execute(
                () =>
            {
                var project  = CreateProject("TemplatesNet45Twice", "4.5", "CSharp");
                var edmxItem = project.ProjectItems.AddFromFileCopy(ModelEdmxFilePath);
                edmxItem.Open();

                new DbContextCodeGenerator().AddDbContextTemplates(edmxItem, useLegacyTemplate: false);
                new DbContextCodeGenerator().AddDbContextTemplates(edmxItem, useLegacyTemplate: false);

                CollectionAssert.IsSubsetOf(
                    new[] { "Simple.tt", "Simple.Context.tt" },
                    (edmxItem.ProjectItems ?? edmxItem.Collection).Cast <ProjectItem>().Select(i => i.Name).ToArray());
            });
        }
コード例 #14
0
        public void AddDbContextTemplates_adds_the_template_items_nested_under_the_EDMX_item()
        {
            UITestRunner.Execute(
                () =>
            {
                var project  = CreateProject("TemplatesNet40", "4", "CSharp");
                var edmxItem = project.ProjectItems.AddFromFileCopy(ModelEdmxFilePath);
                edmxItem.Open();

                new DbContextCodeGenerator().AddDbContextTemplates(edmxItem);

                var typesT4 = edmxItem.ProjectItems.OfType <ProjectItem>().Single(i => i.Name == "Simple.tt");
                Assert.IsTrue(typesT4.get_FileNames(1).EndsWith(@"TemplatesNet40\Simple.tt"));

                var contextT4 = edmxItem.ProjectItems.OfType <ProjectItem>().Single(i => i.Name == "Simple.Context.tt");
                Assert.IsTrue(contextT4.get_FileNames(1).EndsWith(@"TemplatesNet40\Simple.Context.tt"));
            });
        }
コード例 #15
0
        public void AddDbContextTemplates_adds_the_template_items_to_the_item_collection_for_a_website_project()
        {
            UITestRunner.Execute(
                () =>
            {
                var project  = CreateWebSiteProject("TemplatesNet45Web", "4.5", "CSharp");
                var appCode  = project.ProjectItems.AddFolder("App_Code");
                var edmxItem = appCode.ProjectItems.AddFromFileCopy(ModelEdmxFilePath);
                edmxItem.Open();

                new DbContextCodeGenerator().AddDbContextTemplates(edmxItem);

                var typesT4 = appCode.ProjectItems.OfType <ProjectItem>().Single(i => i.Name == "Simple.tt");
                Assert.IsTrue(typesT4.get_FileNames(1).EndsWith(@"TemplatesNet45Web\App_Code\Simple.tt"));

                var contextT4 = appCode.ProjectItems.OfType <ProjectItem>().Single(i => i.Name == "Simple.Context.tt");
                Assert.IsTrue(contextT4.get_FileNames(1).EndsWith(@"TemplatesNet45Web\App_Code\Simple.Context.tt"));
            });
        }
コード例 #16
0
        public void AddDbContextTemplates_does_not_nest_existing_tt_files_or_non_tt_files_added_at_the_same_time_as_the_template_items()
        {
            UITestRunner.Execute(
                () =>
            {
                var project = CreateProject("TemplatesNet40_Nesting", "4", "CSharp");
                project.ProjectItems.AddFromTemplate(
                    ((Solution2)Dte.Solution).GetProjectItemTemplate("XMLFile.zip", "CSharp"), "another.tt");
                var edmxItem = project.ProjectItems.AddFromFileCopy(ModelEdmxFilePath);
                edmxItem.Open();

                new DbContextCodeGenerator().AddDbContextTemplates(edmxItem);

                Assert.IsFalse(edmxItem.ProjectItems.OfType <ProjectItem>().Any(i => i.Name == "another.tt"));
                Assert.IsFalse(edmxItem.ProjectItems.OfType <ProjectItem>().Any(i => i.Name == "packages.config"));

                var additional = project.ProjectItems.OfType <ProjectItem>().Single(i => i.Name == "packages.config");
                Assert.IsTrue(additional.get_FileNames(1).EndsWith(@"TemplatesNet40_Nesting\packages.config"));
            });
        }
コード例 #17
0
        /* TODO: How much value these add? Maybe just need to be removed
         * [TestMethod, HostType("VS IDE")]
         * public void LoadInvalidSampleFiles()
         * {
         *  UITestRunner(delegate()
         *  {
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "TwoThree.EmptySet.cs.edmx", false); // contains error 2063
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "EdmRally.edmx", false); // contains error 3023
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "AbstractSimpleMappingError1.edmx", false); // contains error 2078
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "ComplexType.Condition.edmx", true); // contains error 2016
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "EntitySplitting_Same_EdmProperty_Maps_Different_Store_Type.edmx", false); // contains error 2039
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "EntitySplitting_Same_EdmProperty_Maps_Same_Store_Type_Non_Promotable_Facets.edmx", false); // contains error 2039
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "ExtraIllegalElement.edmx", true); // contains error 102, 2025
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "MemberTypeMismatch.CS.edmx", false); // contains error 2007,2063
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "NullableComplexType.edmx", true); // contains error 157, 2002
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "TwoThree.InvalidXml2.edmx", true); // contains error 102, 2025
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "TwoThree.PartialMapping.StorageEntityContainerMismatch1.edmx", true); // contains error 2007, 2063, also has a MaxLength schema error
         *      LoadFileTest(TestContextEntityDesigner.GeneratedEdmxInvalidSamplesDirectory, "UnparsableQueryView.edmx", true); // contains error 2068
         *  });
         * }
         */

        private bool IsArtifactDesignerSafe(string fileName)
        {
            var isArtifactDesignerSafe = true;

            UITestRunner.Execute(TestContext.TestName,
                                 () =>
            {
                var artifactUri = TestUtils.FileName2Uri(fileName);

                try
                {
                    VsIdeTestHostContext.Dte.OpenFile(artifactUri.LocalPath);
                    isArtifactDesignerSafe = _efArtifactHelper.GetNewOrExistingArtifact(artifactUri).IsDesignerSafe;
                }
                finally
                {
                    VsIdeTestHostContext.Dte.CloseDocument(fileName, false);
                }
            });

            return(isArtifactDesignerSafe);
        }
コード例 #18
0
        private void ExecuteMigrateDiagramNodesTest(string projectName, Action <EntityDesignArtifact, CommandProcessorContext> runTest)
        {
            var modelPath = Path.Combine(TestContext.DeploymentDirectory, @"TestData\Model\v3\PubSimple.edmx");

            UITestRunner.Execute(
                () =>
            {
                EntityDesignArtifact entityDesignArtifact = null;
                Project project = null;

                try
                {
                    project = Dte.CreateProject(
                        TestContext.TestRunDirectory,
                        projectName,
                        DteExtensions.ProjectKind.Executable,
                        DteExtensions.ProjectLanguage.CSharp);

                    var projectItem = Dte.AddExistingItem(modelPath, project);
                    Dte.OpenFile(projectItem.FileNames[0]);

                    entityDesignArtifact =
                        (EntityDesignArtifact) new EFArtifactHelper(EFArtifactHelper.GetEntityDesignModelManager(ServiceProvider))
                        .GetNewOrExistingArtifact(TestUtils.FileName2Uri(projectItem.FileNames[0]));

                    Debug.Assert(entityDesignArtifact != null);
                    var editingContext =
                        _package.DocumentFrameMgr.EditingContextManager.GetNewOrExistingContext(entityDesignArtifact.Uri);

                    // Create TransactionContext to indicate that the transactions are done from first diagram.
                    // This is not used by MigrateDiagramInformationCommand but other commands in the callback methods.
                    var transactionContext = new EfiTransactionContext();
                    transactionContext.Add(
                        EfiTransactionOriginator.TransactionOriginatorDiagramId,
                        new DiagramContextItem(entityDesignArtifact.DesignerInfo.Diagrams.FirstDiagram.Id.Value));

                    var commandProcessorContext =
                        new CommandProcessorContext(
                            editingContext, "MigrateDiagramNodesTest", projectName + "Txn", entityDesignArtifact, transactionContext);
                    MigrateDiagramInformationCommand.DoMigrate(commandProcessorContext, entityDesignArtifact);

                    Debug.Assert(entityDesignArtifact.DiagramArtifact != null);
                    Debug.Assert(
                        entityDesignArtifact.IsDesignerSafe,
                        "Artifact should not be in safe mode after MigrateDiagramInformationCommand is executed.");
                    Debug.Assert(
                        new Uri(entityDesignArtifact.Uri.LocalPath + EntityDesignArtifact.EXTENSION_DIAGRAM)
                        == entityDesignArtifact.DiagramArtifact.Uri);

                    runTest(entityDesignArtifact, commandProcessorContext);
                }
                finally
                {
                    if (entityDesignArtifact != null)
                    {
                        entityDesignArtifact.Dispose();
                    }

                    if (project != null)
                    {
                        Dte.CloseSolution(false);
                    }
                }
            });
        }
コード例 #19
0
 public void FindDbContextTemplate_returns_null_for_project_targeting_dotNET3_5()
 {
     UITestRunner.Execute(
         () => { Assert.IsNull(new DbContextCodeGenerator().FindDbContextTemplate(CreateProject("Net35", "3.5", "CSharp"))); });
 }