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()); }); }); }
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); } }); }
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")); }); }
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")); }); }
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); } } }); }
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"); }); }
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"); }); }
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")); }); }
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")); }); }
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"); } }); }
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()); }); }
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")); }); }
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")); }); }
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")); }); }
/* 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); }
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); } } }); }
public void FindDbContextTemplate_returns_null_for_project_targeting_dotNET3_5() { UITestRunner.Execute( () => { Assert.IsNull(new DbContextCodeGenerator().FindDbContextTemplate(CreateProject("Net35", "3.5", "CSharp"))); }); }