public void PopulateFeature_PopulatesRazorCompiledItemsFromTypeAssembly() { // Arrange var item1 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "Item1" && i.Type == typeof(TestView)); var item2 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "Item2" && i.Type == typeof(TestPage)); var assembly = new TestAssembly(new[] { new RazorCompiledItemAttribute(typeof(TestView), "mvc.1.0.razor-page", "Item1"), new RazorCompiledItemAttribute(typeof(TestView), "mvc.1.0.razor-view", "Item1"), }); var part1 = new AssemblyPart(assembly); var part2 = new Mock <ApplicationPart>(); part2 .As <IRazorCompiledItemProvider>() .Setup(p => p.CompiledItems) .Returns(new[] { item1, item2, }); var featureProvider = new RazorCompiledItemFeatureProvider(); var feature = new ViewsFeature(); // Act featureProvider.PopulateFeature(new[] { part1, part2.Object }, feature); // Assert Assert.Equal(new[] { item1, item2 }, feature.ViewDescriptors.Select(d => d.Item)); }
public void PopulateFeature_AddsItemsFromProviderTypes() { // Arrange var item1 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "Item1" && i.Type == typeof(TestView)); var item2 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "Item2" && i.Type == typeof(TestPage)); var part1 = new AssemblyPart(typeof(RazorCompiledItemFeatureProviderTest).Assembly); var part2 = new Mock <ApplicationPart>(); part2 .As <IRazorCompiledItemProvider>() .Setup(p => p.CompiledItems).Returns(new[] { item1, item2, }); var featureProvider = new RazorCompiledItemFeatureProvider(); var feature = new ViewsFeature(); // Act featureProvider.PopulateFeature(new[] { part1, part2.Object }, feature); // Assert Assert.Equal(new[] { item1, item2 }, feature.ViewDescriptors.Select(d => d.Item)); }
public void PopulateFeature_ReplacesWithHotRelaodedItems() { // Arrange var item1 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "Item1" && i.Type == typeof(TestView)); var item2 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "Item2" && i.Type == typeof(TestPage) && i.Kind == "mvc.1.0.razor-page"); var applicationPart = new TestRazorCompiledItemProvider { CompiledItems = new[] { item1, item2 } }; var featureProvider = new RazorCompiledItemFeatureProvider(); // Act - 1 var feature = new ViewsFeature(); featureProvider.PopulateFeature(new[] { applicationPart }, feature); // Assert - 1 Assert.Equal(new[] { item1, item2 }, feature.ViewDescriptors.Select(d => d.Item)); // Act - 2 featureProvider.UpdateCache(new[] { typeof(object), typeof(TestReloadedPage) }); // Assert - 2 feature = new ViewsFeature(); featureProvider.PopulateFeature(new[] { applicationPart }, feature); Assert.Collection( feature.ViewDescriptors, item => { Assert.Same(item.Item, item1); }, item => { Assert.Same(typeof(TestReloadedPage), item.Item.Type); Assert.Same("Item2", item.Item.Identifier); Assert.Equal("mvc.1.0.razor-page", item.Item.Kind); Assert.Contains(typeof(RouteAttribute), item.Item.Metadata.Select(m => m.GetType())); // Verify we pick up new attributes }); }
public void PopulateFeature_ThrowsIfTwoItemsFromSamePart_OnlyDifferInCase() { // Arrange var item1 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "Item"); var item2 = Mock.Of <RazorCompiledItem>(i => i.Identifier == "item"); var expected = string.Join( Environment.NewLine, "The following precompiled view paths differ only in case, which is not supported:", "Item", "item"); var part1 = new AssemblyPart(typeof(RazorCompiledItemFeatureProviderTest).Assembly); var part2 = new Mock <ApplicationPart>(); part2 .As <IRazorCompiledItemProvider>() .Setup(p => p.CompiledItems).Returns(new[] { item1, item2, }); var featureProvider = new RazorCompiledItemFeatureProvider(); var feature = new ViewsFeature(); // Act & Assert var ex = Assert.Throws <InvalidOperationException>(() => featureProvider.PopulateFeature(new[] { part1, part2.Object }, feature)); Assert.Equal(expected, ex.Message); }