public void SchemaVersionSupportedInProject_returns_true_for_v3_and_EF6_otherwise_false() { var targetNetFrameworkVersions = new[] { ".NETFramework, Version=v4.0", ".NETFramework, Version=v4.5" }; foreach (var targetNetFrameworkVersion in targetNetFrameworkVersions) { var mockDte = new MockDTE( targetNetFrameworkVersion, references: new[] { MockDTE.CreateReference("EntityFramework", "6.0.0.0") }); Assert.False( VsUtils.SchemaVersionSupportedInProject( mockDte.Project, EntityFrameworkVersion.Version1, mockDte.ServiceProvider)); Assert.False( VsUtils.SchemaVersionSupportedInProject( mockDte.Project, EntityFrameworkVersion.Version2, mockDte.ServiceProvider)); Assert.True( VsUtils.SchemaVersionSupportedInProject( mockDte.Project, EntityFrameworkVersion.Version3, mockDte.ServiceProvider)); } }
public void GetMetadataFileNamesFromArtifactFileName_creates_metadata_file_names_for_non_null_edmx_ProjectItem() { var mockDte = new MockDTE(".NETFramework, Version=v4.5", references: new Reference[0]); mockDte.SetProjectProperties(new Dictionary <string, object> { { "FullPath", @"D:\Projects\Project\Folder" } }); var mockParentProjectItem = new Mock <ProjectItem>(); mockParentProjectItem.Setup(p => p.Collection).Returns(Mock.Of <ProjectItems>()); mockParentProjectItem.Setup(p => p.Name).Returns("Folder"); var mockModelProjectItem = new Mock <ProjectItem>(); var mockCollection = new Mock <ProjectItems>(); mockCollection.Setup(p => p.Parent).Returns(mockParentProjectItem.Object); mockModelProjectItem.Setup(p => p.Collection).Returns(mockCollection.Object); var metadataFileNames = ConnectionManager.GetMetadataFileNamesFromArtifactFileName( mockDte.Project, @"c:\temp\myModel.edmx", mockDte.ServiceProvider, (_, __) => mockModelProjectItem.Object); Assert.Equal(@".\Folder\myModel.csdl", metadataFileNames[0]); Assert.Equal(@".\Folder\myModel.ssdl", metadataFileNames[1]); Assert.Equal(@".\Folder\myModel.msl", metadataFileNames[2]); }
public void RunStarted_saves_context_generated_code_replacementsDictionary_as_contextfilecontents() { var mockCodeGenerator = new Mock <CodeFirstModelGenerator>(MockDTE.CreateProject()); mockCodeGenerator .Setup(g => g.Generate(It.IsAny <DbModel>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(new[] { new KeyValuePair <string, string>("MyContext", "context code") }); var modelBuilderSettings = new ModelBuilderSettings { SaveConnectionStringInAppConfig = true, AppConfigConnectionPropertyName = "ConnString" }; var replacementsDictionary = new Dictionary <string, string> { { "$safeitemname$", "MyContext" }, { "$rootnamespace$", "Project.Data" } }; new OneEFWizard(vsUtils: Mock.Of <IVsUtils>()) .RunStarted(modelBuilderSettings, mockCodeGenerator.Object, replacementsDictionary); Assert.Equal("context code", replacementsDictionary["$contextfilecontents$"]); }
public void RunStarted_uses_context_class_name_if_SaveConnectionStringInAppConfig_false() { var mockCodeGenerator = new Mock <CodeFirstModelGenerator>(MockDTE.CreateProject()); mockCodeGenerator .Setup(g => g.Generate(It.IsAny <DbModel>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(new[] { new KeyValuePair <string, string>() }); var modelBuilderSettings = new ModelBuilderSettings { SaveConnectionStringInAppConfig = false, AppConfigConnectionPropertyName = "ConnString" }; var replacementsDictionary = new Dictionary <string, string> { { "$safeitemname$", "MyContext" }, { "$rootnamespace$", "Project.Data" } }; new OneEFWizard(vsUtils: Mock.Of <IVsUtils>()) .RunStarted(modelBuilderSettings, mockCodeGenerator.Object, replacementsDictionary); mockCodeGenerator.Verify(g => g.Generate(It.IsAny <DbModel>(), "Project.Data", "MyContext", "MyContext"), Times.Once()); }
public void RunStarted_creates_valid_context_name_if_safeitemname_is_not_valid_identifier() { var mockVsUtils = new Mock <IVsUtils>(); var wizard = new OneEFWizard(vsUtils: mockVsUtils.Object); var mockCodeGenerator = new Mock <CodeFirstModelGenerator>(MockDTE.CreateProject()); mockCodeGenerator .Setup(g => g.Generate(It.IsAny <DbModel>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(new[] { new KeyValuePair <string, string>(string.Empty, string.Empty) }); var settings = new ModelBuilderSettings { VSApplicationType = VisualStudioProjectSystem.WebApplication }; var replacenentsDictionary = new Dictionary <string, string> { { "$safeitemname$", "3My.Con text" }, { "$rootnamespace$", "Project" } }; wizard.RunStarted(settings, mockCodeGenerator.Object, replacenentsDictionary); mockCodeGenerator.Verify( g => g.Generate( It.IsAny <DbModel>(), "Project", /*contextClassName*/ "_3MyContext", /*connectionStringName*/ "_3MyContext"), Times.Once()); }
public void OnDeactivate_does_not_update_settings_if_model_file_already_exists() { var mockDte = new MockDTE(".NETFramework, Version=v4.5", references: new Reference[0]); var modelBuilderSettings = new ModelBuilderSettings { NewItemFolder = @"C:\temp", ModelName = "myModel", Project = mockDte.Project }; var wizard = ModelBuilderWizardFormHelper.CreateWizard(modelBuilderSettings, mockDte.ServiceProvider); var mockWizardPageStart = new Mock <WizardPageStart>(wizard, null) { CallBase = true }; mockWizardPageStart .Protected() .Setup <bool>("VerifyModelFilePath", ItExpr.IsAny <string>()) .Returns(false); mockWizardPageStart.Object.OnDeactivate(); Assert.Null(modelBuilderSettings.ModelPath); Assert.True(wizard.FileAlreadyExistsError); }
// Test stopped working with 15.6 Preview 7 - plan to re-enable with https://github.com/aspnet/EntityFramework6/issues/541 // [Fact] public void Generate_throws_when_error_in_entity_type_template() { var project = MockDTE.CreateProject(); var token = Guid.NewGuid().ToString(); using (AddCustomizedTemplates(project)) { var templatePath = Path.GetTempFileName(); try { File.WriteAllText(templatePath, "<# throw new Exception(\"" + token + "\"); #>"); var fullPathProperty = project.ProjectItems.Item("CodeTemplates").ProjectItems .Item("EFModelFromDatabase").ProjectItems.Item("EntityType.cs.t4").Properties.Cast <Property>() .First(i => i.Name == "FullPath"); Mock.Get(fullPathProperty).SetupGet(p => p.Value).Returns(templatePath); var generator = new CodeFirstModelGenerator(project); var ex = Assert.Throws <CodeFirstModelGenerationException>( () => generator.Generate(Model, "WebApplication1.Models", "MyContext", "MyContextConnString") .ToArray()); Assert.Equal( string.Format(Resources.ErrorGeneratingCodeFirstModel, "Entity.cs"), ex.Message); Assert.Contains(token, ex.InnerException.Message); } finally { File.Delete(templatePath); } } }
DetermineIfArtifactIsVersionSafe_sets_IsVersionSafe_to_true_if_schema_is_the_latest_version_supported_by_referenced_runtime() { var mockDte = new MockDTE( ".NETFramework, Version=v4.5.1", references: new[] { MockDTE.CreateReference("EntityFramework", "6.0.0.0") }); var modelManager = new Mock <ModelManager>(null, null).Object; var modelProvider = new Mock <XmlModelProvider>().Object; var mockVsArtifact = new Mock <VSArtifact>(modelManager, new Uri("urn:dummy"), modelProvider) { CallBase = true }; mockVsArtifact.Protected().Setup <IServiceProvider>("ServiceProvider").Returns(mockDte.ServiceProvider); mockVsArtifact.Protected().Setup <Project>("GetProject").Returns(mockDte.Project); mockVsArtifact.Setup(a => a.XDocument).Returns( new XDocument( new XElement( XName.Get( "Edmx", SchemaManager.GetEDMXNamespaceName(EntityFrameworkVersion.Version3))))); var artifact = mockVsArtifact.Object; artifact.DetermineIfArtifactIsVersionSafe(); Assert.True(artifact.IsVersionSafe); }
public void listViewModelContents_DoubleClick_calls_OnFinish_if_EmptyModelCodeFirst_selected_and_EF_not_referenced_or_EF6_referenced() { var mockDtes = new[] { new MockDTE(".NETFramework, Version=v4.5", references: new Reference[0]), new MockDTE(".NETFramework, Version=v4.5", references: new[] { MockDTE.CreateReference("EntityFramework", "6.0.0.0") }) }; foreach (var mockDte in mockDtes) { var mockWizard = Mock.Get( ModelBuilderWizardFormHelper.CreateWizard( ModelGenerationOption.EmptyModelCodeFirst, mockDte.Project, serviceProvider: mockDte.ServiceProvider)); var mockWizardPageStart = CreateMockWizardPageStart(mockWizard.Object, WizardPageStart.GenerateEmptyModelCodeFirstIndex); mockWizard.Setup(w => w.OnFinish()); mockWizardPageStart.Object.listViewModelContents_DoubleClick(sender: null, e: null); mockWizard.Verify(w => w.OnFinish(), Times.Once()); } }
public void DetermineIfArtifactIsVersionSafe_sets_IsVersionSafe_to_true_for_Misc_project() { var mockDte = new MockDTE( ".NETFramework, Version=v4.5.1", Constants.vsMiscFilesProjectUniqueName); var modelManager = new Mock <ModelManager>(null, null).Object; var modelProvider = new Mock <XmlModelProvider>().Object; var mockVsArtifact = new Mock <VSArtifact>(modelManager, new Uri("urn:dummy"), modelProvider) { CallBase = true }; mockVsArtifact.Protected().Setup <IServiceProvider>("ServiceProvider").Returns(mockDte.ServiceProvider); mockVsArtifact.Protected().Setup <Project>("GetProject").Returns(mockDte.Project); mockVsArtifact.Setup(a => a.XDocument).Returns( new XDocument( new XElement( XName.Get( "Edmx", SchemaManager.GetEDMXNamespaceName(EntityFrameworkVersion.Version3))))); var artifact = mockVsArtifact.Object; artifact.DetermineIfArtifactIsVersionSafe(); Assert.True(artifact.IsVersionSafe); }
public void DetermineIfArtifactIsVersionSafe_sets_IsVersionSafe_to_false_if_project_does_not_support_EF() { var mockDte = new MockDTE( ".NETFramework, Version=v2.0", references: new Reference[0]); var modelManager = new Mock <ModelManager>(null, null).Object; var modelProvider = new Mock <XmlModelProvider>().Object; var mockVsArtifact = new Mock <VSArtifact>(modelManager, new Uri("urn:dummy"), modelProvider) { CallBase = true }; mockVsArtifact.Protected().Setup <IServiceProvider>("ServiceProvider").Returns(mockDte.ServiceProvider); mockVsArtifact.Protected().Setup <Project>("GetProject").Returns(mockDte.Project); mockVsArtifact.Setup(a => a.XDocument).Returns( new XDocument( new XElement( XName.Get( "Edmx", SchemaManager.GetEDMXNamespaceName(EntityFrameworkVersion.Version2))))); var artifact = mockVsArtifact.Object; artifact.DetermineIfArtifactIsVersionSafe(); Assert.False(artifact.IsVersionSafe); }
public void GetTextBoxConnectionStringValue_returns_entity_connection_string_for_EDMX_ModelFirst() { var guid = new Guid("42424242-4242-4242-4242-424242424242"); var mockDte = new MockDTE(".NETFramework, Version=v4.5", references: new Reference[0]); mockDte.SetProjectProperties(new Dictionary <string, object> { { "FullPath", @"C:\Project" } }); var mockParentProjectItem = new Mock <ProjectItem>(); mockParentProjectItem.Setup(p => p.Collection).Returns(Mock.Of <ProjectItems>()); mockParentProjectItem.Setup(p => p.Name).Returns("Folder"); var mockModelProjectItem = new Mock <ProjectItem>(); var mockCollection = new Mock <ProjectItems>(); mockCollection.Setup(p => p.Parent).Returns(mockParentProjectItem.Object); mockModelProjectItem.Setup(p => p.Collection).Returns(mockCollection.Object); var wizardPageDbConfig = new WizardPageDbConfig( ModelBuilderWizardFormHelper.CreateWizard(ModelGenerationOption.GenerateDatabaseScript, mockDte.Project, @"C:\Project\myModel.edmx")); Assert.Equal( "metadata=res://*/myModel.csdl|res://*/myModel.ssdl|res://*/myModel.msl;provider=System.Data.SqlClient;" + "provider connection string=\"integrated security=SSPI;MultipleActiveResultSets=True;App=EntityFramework\"", wizardPageDbConfig.GetTextBoxConnectionStringValue( CreateDataProviderManager(guid), guid, "Integrated Security=SSPI")); }
public void GetProjectReferenceAssemblyNames_for_websites_ignores_references_with_badly_formed_strong_names() { var project = MockDTE.CreateWebSite( new[] { // Deliberately emptying the PublicKeyToken causes a situation where // creating the AssemblyName throws. This test tests that the exception // is ignored and the other 2 references are still returned. // (See issue 1467). MockDTE.CreateAssemblyReference( "AspNet.ScriptManager.jQuery.UI.Combined, Version=1.8.20.0, Culture=neutral, PublicKeyToken="), MockDTE.CreateAssemblyReference( "System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"), MockDTE.CreateAssemblyReference( "EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") }); var referenceAssemblyNames = VsUtils.GetProjectReferenceAssemblyNames(project).ToArray(); Assert.Equal(2, referenceAssemblyNames.Count()); Assert.Equal( 0, referenceAssemblyNames.Where( ran => ran.Key == "AspNet.ScriptManager.jQuery.UI.Combined").Count()); Assert.Equal( 1, referenceAssemblyNames.Where( ran => ran.Key == "System.Data.Entity").Count()); Assert.Equal( 1, referenceAssemblyNames.Where( ran => ran.Key == "EntityFramework").Count()); }
public void TargetNetFrameworkVersion_returns_null_for_non_NetFramework_project() { var mockMonikerHelper = new MockDTE("Xbox,Version=v4.0"); Assert.Null( NetFrameworkVersioningHelper.TargetNetFrameworkVersion( mockMonikerHelper.Project, mockMonikerHelper.ServiceProvider)); }
public void TargetNetFrameworkVersion_returns_null_for_invalid_target_framework_moniker() { var mockMonikerHelper = new MockDTE("abc"); Assert.Null( NetFrameworkVersioningHelper.TargetNetFrameworkVersion( mockMonikerHelper.Project, mockMonikerHelper.ServiceProvider)); }
public void TargetNetFrameworkVersion_returns_null_for_non_string_target_net_framework_moniker() { var mockMonikerHelper = new MockDTE(new object()); Assert.Null( NetFrameworkVersioningHelper.TargetNetFrameworkVersion( mockMonikerHelper.Project, mockMonikerHelper.ServiceProvider)); }
public void GetEntityFrameworkVersion_returns_null_when_misc_files() { var project = MockDTE.CreateMiscFilesProject(); var serviceProvider = new Mock <IServiceProvider>(); var schemaVersion = EdmUtils.GetEntityFrameworkVersion(project, serviceProvider.Object); Assert.Null(schemaVersion); }
public void EntityFrameworkSupportedInProject_returns_false_for_Misc_project_if_not_allowed() { const string vsMiscFilesProjectUniqueName = "<MiscFiles>"; var monikerHelper = new MockDTE("anytarget", vsMiscFilesProjectUniqueName); Assert.False( VsUtils.EntityFrameworkSupportedInProject(monikerHelper.Project, monikerHelper.ServiceProvider, allowMiscProject: false)); }
public void GetEntityFrameworkVersion_returns_version_when_ef_installed() { var helper = new MockDTE( ".NETFramework,Version=v4.5", references: new[] { MockDTE.CreateReference("EntityFramework", "6.0.0.0") }); var schemaVersion = EdmUtils.GetEntityFrameworkVersion(helper.Project, helper.ServiceProvider); Assert.Equal(EntityFrameworkVersion.Version3, schemaVersion); }
public void GetProjectTargetFileName_returns_null_when_nonstring() { var project = MockDTE.CreateProject( properties: new Dictionary <string, object> { { "OutputFileName", 42 } }); Assert.Null(VsUtils.GetProjectTargetFileName(project)); }
public void GetProjectTargetFileName_returns_name() { var project = MockDTE.CreateProject( properties: new Dictionary <string, object> { { "OutputFileName", "ConsoleApplication1.exe" } }); Assert.Equal("ConsoleApplication1.exe", VsUtils.GetProjectTargetFileName(project)); }
public void TargetNetFrameworkVersion_returns_targeted_version_from_valid_net_framework_moniker() { var mockMonikerHelper = new MockDTE(".NETFramework,Version=v4.0,Profile=Client"); Assert.Equal( NetFrameworkVersioningHelper.NetFrameworkVersion4, NetFrameworkVersioningHelper.TargetNetFrameworkVersion( mockMonikerHelper.Project, mockMonikerHelper.ServiceProvider)); }
public void Generate_returns_code_when_vb() { var generator = new CodeFirstModelGenerator(MockDTE.CreateProject(kind: MockDTE.VBProjectKind)); var files = generator.Generate(Model, "WebApplication1.Models", "MyContext", "MyContextConnString").ToArray(); Assert.Equal(2, files.Length); Assert.Equal(new[] { "MyContext.vb", "Entity.vb" }, files.Select(p => p.Key)); }
public void TemplateSupported_returns_false_for_NetFramework3_5() { var mockMonikerHelper = new MockDTE(".NETFramework,Version=v3.5"); Assert.False( DbContextCodeGenerator.TemplateSupported( mockMonikerHelper.Project, mockMonikerHelper.ServiceProvider)); }
public void TargetNetFrameworkVersion_returns_null_for_misc_project() { const string vsMiscFilesProjectUniqueName = "<MiscFiles>"; var mockMonikerHelper = new MockDTE("abc", vsMiscFilesProjectUniqueName); Assert.Null( NetFrameworkVersioningHelper.TargetNetFrameworkVersion( mockMonikerHelper.Project, mockMonikerHelper.ServiceProvider)); }
public void Generate_returns_code_when_vb_and_empty_model() { var generator = new CodeFirstModelGenerator(MockDTE.CreateProject(kind: MockDTE.VBProjectKind)); var files = generator.Generate(null, "WebApplication1.Models", "MyContext", "MyContextConnString").ToArray(); Assert.Equal(1, files.Length); Assert.Equal("MyContext.vb", files[0].Key); Assert.Contains(Resources.CodeFirstCodeFile_DbSetComment_VB, files[0].Value); }
public void GetInstalledEntityFrameworkAssemblyVersion_returns_EF_version_when_EF_and_SDE() { var project = MockDTE.CreateProject( new[] { MockDTE.CreateReference("System.Data.Entity", "4.0.0.0"), MockDTE.CreateReference("EntityFramework", "5.0.0.0") }); Assert.Equal(RuntimeVersion.Version5Net45, VsUtils.GetInstalledEntityFrameworkAssemblyVersion(project)); }
public void GetProjectTargetDir_returns_dir_when_website() { var project = MockDTE.CreateWebSite( properties: new Dictionary <string, object> { { "FullPath", @"C:\Path\To\WebSite" } }); var targetDir = VsUtils.GetProjectTargetDir(project, Mock.Of <IServiceProvider>()); Assert.Equal(@"C:\Path\To\WebSite\Bin\", targetDir); }
public void GetProjectRoot_returns_fullpath_when_website() { const string fullPath = @"C:\Path\To\WebSite"; var project = MockDTE.CreateWebSite( properties: new Dictionary <string, object> { { "FullPath", fullPath } }); var root = VsUtils.GetProjectRoot(project, Mock.Of <IServiceProvider>()); Assert.Equal(fullPath + Path.DirectorySeparatorChar, root.FullName); }
public void TemplateSupported_returns_false_for_Misc_project() { const string vsMiscFilesProjectUniqueName = "<MiscFiles>"; var mockMonikerHelper = new MockDTE(".NETFramework,Version=v4.0", vsMiscFilesProjectUniqueName); Assert.False( DbContextCodeGenerator.TemplateSupported( mockMonikerHelper.Project, mockMonikerHelper.ServiceProvider)); }