public void GetDescriptors_AddsDescriptorsForAreaPages()
        {
            // Arrange
            var model = new PageRouteModel("/Test.cshtml", "/Test")
            {
                RouteValues =
                {
                    { "custom-key", "custom-value" },
                },
                Selectors =
                {
                    new SelectorModel
                    {
                        AttributeRouteModel = new AttributeRouteModel
                        {
                            Template = "/Test/{id:int?}",
                        }
                    }
                }
            };
            var applicationModelProvider = new TestPageRouteModelProvider(model);
            var provider = new PageActionDescriptorProvider(
                new[] { applicationModelProvider },
                GetAccessor <MvcOptions>(),
                GetRazorPagesOptions());
            var context = new ActionDescriptorProviderContext();

            // Act
            provider.OnProvidersExecuting(context);

            // Assert
            var result     = Assert.Single(context.Results);
            var descriptor = Assert.IsType <PageActionDescriptor>(result);

            Assert.Equal(model.RelativePath, descriptor.RelativePath);
            Assert.Collection(
                descriptor.RouteValues.OrderBy(kvp => kvp.Key),
                kvp =>
            {
                Assert.Equal("custom-key", kvp.Key);
                Assert.Equal("custom-value", kvp.Value);
            },
                kvp =>
            {
                Assert.Equal("page", kvp.Key);
                Assert.Equal("/Test", kvp.Value);
            });
        }
Esempio n. 2
0
        public void GetDescriptors_DoesNotAddDescriptorsIfNoApplicationModelsAreDiscovered()
        {
            // Arrange
            var applicationModelProvider = new TestPageRouteModelProvider();
            var provider = new PageActionDescriptorProvider(
                new[] { applicationModelProvider },
                GetAccessor <MvcOptions>(),
                GetRazorPagesOptions());
            var context = new ActionDescriptorProviderContext();

            // Act
            provider.OnProvidersExecuting(context);

            // Assert
            Assert.Empty(context.Results);
        }
Esempio n. 3
0
        public void GetDescriptors_AddsMultipleDescriptorsForPageWithMultipleSelectors()
        {
            // Arrange
            var applicationModelProvider = new TestPageRouteModelProvider(
                new PageRouteModel("/Catalog/Details/Index.cshtml", "/Catalog/Details/Index")
            {
                Selectors =
                {
                    CreateSelectorModel("/Catalog/Details/Index/{id:int?}"),
                    CreateSelectorModel("/Catalog/Details/{id:int?}"),
                },
            });

            var provider = new PageActionDescriptorProvider(
                new[] { applicationModelProvider },
                GetAccessor <MvcOptions>(),
                GetRazorPagesOptions());
            var context = new ActionDescriptorProviderContext();

            // Act
            provider.OnProvidersExecuting(context);

            // Assert
            Assert.Collection(context.Results,
                              result =>
            {
                var descriptor = Assert.IsType <PageActionDescriptor>(result);
                Assert.Equal("/Catalog/Details/Index.cshtml", descriptor.RelativePath);
                Assert.Equal("/Catalog/Details/Index", descriptor.RouteValues["page"]);
                Assert.Equal("/Catalog/Details/Index/{id:int?}", descriptor.AttributeRouteInfo.Template);
            },
                              result =>
            {
                var descriptor = Assert.IsType <PageActionDescriptor>(result);
                Assert.Equal("/Catalog/Details/Index.cshtml", descriptor.RelativePath);
                Assert.Equal("/Catalog/Details/Index", descriptor.RouteValues["page"]);
                Assert.Equal("/Catalog/Details/{id:int?}", descriptor.AttributeRouteInfo.Template);
            });
        }