public async Task OnProjectChanged_ReadsProperties_InitializesProject() { // Arrange RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, "2.1"); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.1"); ConfigurationItems.Item("MVC-2.1"); ConfigurationItems.Property("MVC-2.1", Rules.RazorConfiguration.ExtensionsProperty, "MVC-2.1;Another-Thing"); ExtensionItems.Item("MVC-2.1"); ExtensionItems.Item("Another-Thing"); DocumentItems.Item("File.cshtml"); DocumentItems.Property("File.cshtml", Rules.RazorGenerateWithTargetPath.TargetPathProperty, "File.cshtml"); var changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(), ConfigurationItems.ToChange(), ExtensionItems.ToChange(), DocumentItems.ToChange(), }; var services = new TestProjectSystemServices("c:\\MyProject\\Test.csproj"); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert var snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal("c:\\MyProject\\Test.csproj", snapshot.FilePath); Assert.Equal(RazorLanguageVersion.Version_2_1, snapshot.Configuration.LanguageVersion); Assert.Equal("MVC-2.1", snapshot.Configuration.ConfigurationName); Assert.Collection( snapshot.Configuration.Extensions, e => Assert.Equal("MVC-2.1", e.ExtensionName), e => Assert.Equal("Another-Thing", e.ExtensionName)); Assert.Collection( snapshot.DocumentFilePaths.OrderBy(d => d), d => { var document = snapshot.GetDocument(d); Assert.Equal("c:\\MyProject\\File.cshtml", document.FilePath); Assert.Equal("File.cshtml", document.TargetPath); }); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectRenamed_RemovesHostProject_CopiesConfiguration() { // Arrange RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, "2.1"); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.1"); ConfigurationItems.Item("MVC-2.1"); ConfigurationItems.Property("MVC-2.1", Rules.RazorConfiguration.ExtensionsProperty, "MVC-2.1;Another-Thing"); ExtensionItems.Item("MVC-2.1"); ExtensionItems.Item("Another-Thing"); RazorComponentWithTargetPathItems.Item(Path.GetFileName(TestProjectData.SomeProjectComponentFile1.FilePath)); RazorComponentWithTargetPathItems.Property(Path.GetFileName(TestProjectData.SomeProjectComponentFile1.FilePath), Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.SomeProjectComponentFile1.TargetPath); RazorGenerateWithTargetPathItems.Item(Path.GetFileName(TestProjectData.SomeProjectFile1.FilePath)); RazorGenerateWithTargetPathItems.Property(Path.GetFileName(TestProjectData.SomeProjectFile1.FilePath), Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.SomeProjectFile1.TargetPath); var changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(), ConfigurationItems.ToChange(), ExtensionItems.ToChange(), RazorComponentWithTargetPathItems.ToChange(), RazorGenerateWithTargetPathItems.ToChange(), }; var services = new TestProjectSystemServices(TestProjectData.SomeProject.FilePath); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act - 1 await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 1 var snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal(TestProjectData.SomeProject.FilePath, snapshot.FilePath); Assert.Same("MVC-2.1", snapshot.Configuration.ConfigurationName); // Act - 2 services.UnconfiguredProject.FullPath = TestProjectData.AnotherProject.FilePath; await Task.Run(async() => await host.OnProjectRenamingAsync()); // Assert - 1 snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal(TestProjectData.AnotherProject.FilePath, snapshot.FilePath); Assert.Same("MVC-2.1", snapshot.Configuration.ConfigurationName); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectChanged_NoVersionFound_DoesNotIniatializeProject() { // Arrange var changes = new TestProjectChangeDescription[] { new TestProjectChangeDescription() { RuleName = Rules.RazorGeneral.SchemaName, After = TestProjectRuleSnapshot.CreateProperties(Rules.RazorGeneral.SchemaName, new Dictionary <string, string>() { { Rules.RazorGeneral.RazorLangVersionProperty, "" }, { Rules.RazorGeneral.RazorDefaultConfigurationProperty, "" }, }), }, new TestProjectChangeDescription() { RuleName = Rules.RazorConfiguration.SchemaName, After = TestProjectRuleSnapshot.CreateItems(Rules.RazorConfiguration.SchemaName, new Dictionary <string, Dictionary <string, string> >() { }) }, new TestProjectChangeDescription() { RuleName = Rules.RazorExtension.SchemaName, After = TestProjectRuleSnapshot.CreateItems(Rules.RazorExtension.SchemaName, new Dictionary <string, Dictionary <string, string> >() { }) } }; var services = new TestProjectSystemServices("Test.csproj"); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert Assert.Empty(ProjectManager.Projects); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }
[ForegroundFact] // This can happen if the .xaml files aren't included correctly. public async Task DefaultRazorProjectHost_OnProjectChanged_NoRulesDefined() { // Arrange var changes = new TestProjectChangeDescription[] { }; var services = new TestProjectSystemServices("Test.csproj"); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); // Act & Assert await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectChanged_NoVersionFound_DoesNotIniatializeProject() { // Arrange RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, ""); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, ""); ConfigurationItems.Item("TestConfiguration"); ExtensionItems.Item("TestExtension"); RazorGenerateWithTargetPathItems.Item(Path.GetFileName(TestProjectData.SomeProjectFile1.FilePath)); var changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(), ConfigurationItems.ToChange(), ExtensionItems.ToChange(), RazorComponentWithTargetPathItems.ToChange(), RazorGenerateWithTargetPathItems.ToChange(), }; var services = new TestProjectSystemServices(TestProjectData.SomeProject.FilePath); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert Assert.Empty(ProjectManager.Projects); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectChanged_NoVersionFound_DoesNotIniatializeProject() { // Arrange RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, ""); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, ""); ConfigurationItems.Item("TestConfiguration"); ExtensionItems.Item("TestExtension"); DocumentItems.Item("File.cshtml"); var changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(), ConfigurationItems.ToChange(), ExtensionItems.ToChange(), DocumentItems.ToChange(), }; var services = new TestProjectSystemServices("c:\\MyProject\\Test.csproj"); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert Assert.Empty(ProjectManager.Projects); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectChanged_AfterDispose_IgnoresUpdate() { // Arrange RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, "2.1"); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.1"); ConfigurationItems.Item("MVC-2.1"); ConfigurationItems.Property("MVC-2.1", Rules.RazorConfiguration.ExtensionsProperty, "MVC-2.1;Another-Thing"); ExtensionItems.Item("MVC-2.1"); ExtensionItems.Item("Another-Thing"); DocumentItems.Item("File.cshtml"); DocumentItems.Property("File.cshtml", Rules.RazorGenerateWithTargetPath.TargetPathProperty, "File.cshtml"); var changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(), ConfigurationItems.ToChange(), ExtensionItems.ToChange(), DocumentItems.ToChange(), }; var services = new TestProjectSystemServices("c:\\MyProject\\Test.csproj"); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act - 1 await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 1 var snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal("c:\\MyProject\\Test.csproj", snapshot.FilePath); Assert.Equal(RazorLanguageVersion.Version_2_1, snapshot.Configuration.LanguageVersion); Assert.Equal("MVC-2.1", snapshot.Configuration.ConfigurationName); Assert.Collection( snapshot.Configuration.Extensions, e => Assert.Equal("MVC-2.1", e.ExtensionName), e => Assert.Equal("Another-Thing", e.ExtensionName)); // Act - 2 await Task.Run(async() => await host.DisposeAsync()); // Assert - 2 Assert.Empty(ProjectManager.Projects); // Act - 3 RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, "2.0"); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.0"); ConfigurationItems.Item("MVC-2.0", new Dictionary <string, string>() { { "Extensions", "MVC-2.0;Another-Thing" }, }); changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(changes[0].After), ConfigurationItems.ToChange(changes[1].After), ExtensionItems.ToChange(changes[2].After), DocumentItems.ToChange(changes[3].After), }; await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 3 Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectChanged_VersionRemoved_DeinitializesProject() { // Arrange RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, "2.1"); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.1"); ConfigurationItems.Item("MVC-2.1"); ConfigurationItems.Property("MVC-2.1", Rules.RazorConfiguration.ExtensionsProperty, "MVC-2.1;Another-Thing"); ExtensionItems.Item("MVC-2.1"); ExtensionItems.Item("Another-Thing"); RazorComponentWithTargetPathItems.Item(Path.GetFileName(TestProjectData.SomeProjectComponentFile1.FilePath)); RazorComponentWithTargetPathItems.Property(Path.GetFileName(TestProjectData.SomeProjectComponentFile1.FilePath), Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.SomeProjectComponentFile1.TargetPath); RazorGenerateWithTargetPathItems.Item(Path.GetFileName(TestProjectData.SomeProjectFile1.FilePath)); RazorGenerateWithTargetPathItems.Property(Path.GetFileName(TestProjectData.SomeProjectFile1.FilePath), Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.SomeProjectFile1.TargetPath); var changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(), ConfigurationItems.ToChange(), ExtensionItems.ToChange(), RazorComponentWithTargetPathItems.ToChange(), RazorGenerateWithTargetPathItems.ToChange(), }; var services = new TestProjectSystemServices(TestProjectData.SomeProject.FilePath); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act - 1 await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 1 var snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal(TestProjectData.SomeProject.FilePath, snapshot.FilePath); Assert.Equal(RazorLanguageVersion.Version_2_1, snapshot.Configuration.LanguageVersion); Assert.Equal("MVC-2.1", snapshot.Configuration.ConfigurationName); Assert.Collection( snapshot.Configuration.Extensions.OrderBy(e => e.ExtensionName), e => Assert.Equal("Another-Thing", e.ExtensionName), e => Assert.Equal("MVC-2.1", e.ExtensionName)); // Act - 2 RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, ""); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, ""); changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(changes[0].After), ConfigurationItems.ToChange(changes[1].After), ExtensionItems.ToChange(changes[2].After), RazorComponentWithTargetPathItems.ToChange(changes[3].After), RazorGenerateWithTargetPathItems.ToChange(changes[4].After), }; await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 2 Assert.Empty(ProjectManager.Projects); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectChanged_UpdateProject_Succeeds() { // Arrange RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, "2.1"); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.1"); ConfigurationItems.Item("MVC-2.1"); ConfigurationItems.Property("MVC-2.1", Rules.RazorConfiguration.ExtensionsProperty, "MVC-2.1;Another-Thing"); ExtensionItems.Item("MVC-2.1"); ExtensionItems.Item("Another-Thing"); RazorComponentWithTargetPathItems.Item(Path.GetFileName(TestProjectData.SomeProjectComponentFile1.FilePath)); RazorComponentWithTargetPathItems.Property(Path.GetFileName(TestProjectData.SomeProjectComponentFile1.FilePath), Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.SomeProjectComponentFile1.TargetPath); RazorGenerateWithTargetPathItems.Item(Path.GetFileName(TestProjectData.SomeProjectFile1.FilePath)); RazorGenerateWithTargetPathItems.Property(Path.GetFileName(TestProjectData.SomeProjectFile1.FilePath), Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.SomeProjectFile1.TargetPath); var changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(), ConfigurationItems.ToChange(), ExtensionItems.ToChange(), RazorComponentWithTargetPathItems.ToChange(), RazorGenerateWithTargetPathItems.ToChange(), }; var services = new TestProjectSystemServices(TestProjectData.SomeProject.FilePath); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act - 1 await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 1 var snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal(TestProjectData.SomeProject.FilePath, snapshot.FilePath); Assert.Equal(RazorLanguageVersion.Version_2_1, snapshot.Configuration.LanguageVersion); Assert.Equal("MVC-2.1", snapshot.Configuration.ConfigurationName); Assert.Collection( snapshot.Configuration.Extensions.OrderBy(e => e.ExtensionName), e => Assert.Equal("Another-Thing", e.ExtensionName), e => Assert.Equal("MVC-2.1", e.ExtensionName)); Assert.Collection( snapshot.DocumentFilePaths.OrderBy(d => d), d => { var document = snapshot.GetDocument(d); Assert.Equal(TestProjectData.SomeProjectFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectFile1.TargetPath, document.TargetPath); }, d => { var document = snapshot.GetDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); Assert.Equal(FileKinds.Component, document.FileKind); }); // Act - 2 RazorGeneralProperties.Property(Rules.RazorGeneral.RazorLangVersionProperty, "2.0"); RazorGeneralProperties.Property(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.0"); ConfigurationItems.RemoveItem("MVC-2.1"); ConfigurationItems.Item("MVC-2.0", new Dictionary <string, string>() { { "Extensions", "MVC-2.0;Another-Thing" }, }); ExtensionItems.Item("MVC-2.0"); RazorComponentWithTargetPathItems.Item(TestProjectData.AnotherProjectNestedComponentFile3.FilePath, new Dictionary <string, string>() { { Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.AnotherProjectNestedComponentFile3.TargetPath }, }); RazorGenerateWithTargetPathItems.Item(TestProjectData.AnotherProjectNestedFile3.FilePath, new Dictionary <string, string>() { { Rules.RazorGenerateWithTargetPath.TargetPathProperty, TestProjectData.AnotherProjectNestedFile3.TargetPath }, }); changes = new TestProjectChangeDescription[] { RazorGeneralProperties.ToChange(changes[0].After), ConfigurationItems.ToChange(changes[1].After), ExtensionItems.ToChange(changes[2].After), RazorComponentWithTargetPathItems.ToChange(changes[3].After), RazorGenerateWithTargetPathItems.ToChange(changes[4].After), }; await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 2 snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal(TestProjectData.SomeProject.FilePath, snapshot.FilePath); Assert.Equal(RazorLanguageVersion.Version_2_0, snapshot.Configuration.LanguageVersion); Assert.Equal("MVC-2.0", snapshot.Configuration.ConfigurationName); Assert.Collection( snapshot.Configuration.Extensions.OrderBy(e => e.ExtensionName), e => Assert.Equal("Another-Thing", e.ExtensionName), e => Assert.Equal("MVC-2.0", e.ExtensionName)); Assert.Collection( snapshot.DocumentFilePaths.OrderBy(d => d), d => { var document = snapshot.GetDocument(d); Assert.Equal(TestProjectData.AnotherProjectNestedFile3.FilePath, document.FilePath); Assert.Equal(TestProjectData.AnotherProjectNestedFile3.TargetPath, document.TargetPath); Assert.Equal(FileKinds.Legacy, document.FileKind); }, d => { var document = snapshot.GetDocument(d); Assert.Equal(TestProjectData.AnotherProjectNestedComponentFile3.FilePath, document.FilePath); Assert.Equal(TestProjectData.AnotherProjectNestedComponentFile3.TargetPath, document.TargetPath); Assert.Equal(FileKinds.Component, document.FileKind); }, d => { var document = snapshot.GetDocument(d); Assert.Equal(TestProjectData.SomeProjectFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectFile1.TargetPath, document.TargetPath); Assert.Equal(FileKinds.Legacy, document.FileKind); }, d => { var document = snapshot.GetDocument(d); Assert.Equal(TestProjectData.SomeProjectComponentFile1.FilePath, document.FilePath); Assert.Equal(TestProjectData.SomeProjectComponentFile1.TargetPath, document.TargetPath); Assert.Equal(FileKinds.Component, document.FileKind); }); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectChanged_AfterDispose_IgnoresUpdate() { // Arrange var changes = new TestProjectChangeDescription[] { new TestProjectChangeDescription() { RuleName = Rules.RazorGeneral.SchemaName, After = TestProjectRuleSnapshot.CreateProperties(Rules.RazorGeneral.SchemaName, new Dictionary <string, string>() { { Rules.RazorGeneral.RazorLangVersionProperty, "2.1" }, { Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.1" }, }), }, new TestProjectChangeDescription() { RuleName = Rules.RazorConfiguration.SchemaName, After = TestProjectRuleSnapshot.CreateItems(Rules.RazorConfiguration.SchemaName, new Dictionary <string, Dictionary <string, string> >() { { "MVC-2.1", new Dictionary <string, string>() { { "Extensions", "MVC-2.1;Another-Thing" }, } }, }) }, new TestProjectChangeDescription() { RuleName = Rules.RazorExtension.SchemaName, After = TestProjectRuleSnapshot.CreateItems(Rules.RazorExtension.SchemaName, new Dictionary <string, Dictionary <string, string> >() { { "MVC-2.1", new Dictionary <string, string>() { } }, { "Another-Thing", new Dictionary <string, string>() { } }, }) } }; var services = new TestProjectSystemServices("Test.csproj"); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act - 1 await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 1 var snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal("Test.csproj", snapshot.FilePath); Assert.Equal(RazorLanguageVersion.Version_2_1, snapshot.Configuration.LanguageVersion); Assert.Equal("MVC-2.1", snapshot.Configuration.ConfigurationName); Assert.Collection( snapshot.Configuration.Extensions, e => Assert.Equal("MVC-2.1", e.ExtensionName), e => Assert.Equal("Another-Thing", e.ExtensionName)); // Act - 2 await Task.Run(async() => await host.DisposeAsync()); // Assert - 2 Assert.Empty(ProjectManager.Projects); // Act - 3 changes[0].After.SetProperty(Rules.RazorGeneral.RazorLangVersionProperty, "2.0"); changes[0].After.SetProperty(Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.0"); changes[1].After.SetItem("MVC-2.0", new Dictionary <string, string>() { { "Extensions", "MVC-2.0;Another-Thing" }, }); await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 3 Assert.Empty(ProjectManager.Projects); }
public async Task OnProjectRenamed_RemovesHostProject_CopiesConfiguration() { // Arrange var changes = new TestProjectChangeDescription[] { new TestProjectChangeDescription() { RuleName = Rules.RazorGeneral.SchemaName, After = TestProjectRuleSnapshot.CreateProperties(Rules.RazorGeneral.SchemaName, new Dictionary <string, string>() { { Rules.RazorGeneral.RazorLangVersionProperty, "2.1" }, { Rules.RazorGeneral.RazorDefaultConfigurationProperty, "MVC-2.1" }, }), }, new TestProjectChangeDescription() { RuleName = Rules.RazorConfiguration.SchemaName, After = TestProjectRuleSnapshot.CreateItems(Rules.RazorConfiguration.SchemaName, new Dictionary <string, Dictionary <string, string> >() { { "MVC-2.1", new Dictionary <string, string>() { { "Extensions", "MVC-2.1;Another-Thing" }, } }, }) }, new TestProjectChangeDescription() { RuleName = Rules.RazorExtension.SchemaName, After = TestProjectRuleSnapshot.CreateItems(Rules.RazorExtension.SchemaName, new Dictionary <string, Dictionary <string, string> >() { { "MVC-2.1", new Dictionary <string, string>() { } }, { "Another-Thing", new Dictionary <string, string>() { } }, }) } }; var services = new TestProjectSystemServices("Test.csproj"); var host = new DefaultRazorProjectHost(services, Workspace, ProjectManager); await Task.Run(async() => await host.LoadAsync()); Assert.Empty(ProjectManager.Projects); // Act - 1 await Task.Run(async() => await host.OnProjectChanged(services.CreateUpdate(changes))); // Assert - 1 var snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal("Test.csproj", snapshot.FilePath); Assert.Same("MVC-2.1", snapshot.Configuration.ConfigurationName); // Act - 2 services.UnconfiguredProject.FullPath = "Test2.csproj"; await Task.Run(async() => await host.OnProjectRenamingAsync()); // Assert - 1 snapshot = Assert.Single(ProjectManager.Projects); Assert.Equal("Test2.csproj", snapshot.FilePath); Assert.Same("MVC-2.1", snapshot.Configuration.ConfigurationName); await Task.Run(async() => await host.DisposeAsync()); Assert.Empty(ProjectManager.Projects); }