示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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
            });
        }
示例#4
0
        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);
        }