public DynamicPageEndpointMatcherPolicyTest() { var actions = new ActionDescriptor[] { new PageActionDescriptor() { RouteValues = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase) { ["page"] = "/Index", }, DisplayName = "/Index", }, new PageActionDescriptor() { RouteValues = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase) { ["page"] = "/About", }, DisplayName = "/About" }, }; PageEndpoints = new[] { new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(actions[0]), "Test1"), new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(actions[1]), "Test2"), }; DynamicEndpoint = new Endpoint( _ => Task.CompletedTask, new EndpointMetadataCollection(new object[] { new DynamicPageRouteValueTransformerMetadata(typeof(CustomTransformer), State), }), "dynamic"); DataSource = new DefaultEndpointDataSource(PageEndpoints); Selector = new TestDynamicPageEndpointSelector(DataSource); var services = new ServiceCollection(); services.AddRouting(); services.AddTransient <CustomTransformer>(s => { var transformer = new CustomTransformer(); transformer.Transform = (c, values, state) => Transform(c, values, state); transformer.Filter = (c, values, state, endpoints) => Filter(c, values, state, endpoints); return(transformer); }); Services = services.BuildServiceProvider(); Comparer = Services.GetRequiredService <EndpointMetadataComparer>(); LoadedEndpoints = new[] { new Endpoint(_ => Task.CompletedTask, EndpointMetadataCollection.Empty, "Test1"), new Endpoint(_ => Task.CompletedTask, EndpointMetadataCollection.Empty, "Test2"), new Endpoint(_ => Task.CompletedTask, EndpointMetadataCollection.Empty, "ReplacedLoaded") }; var loader = new Mock <PageLoader>(); loader .Setup(l => l.LoadAsync(It.IsAny <PageActionDescriptor>())) .Returns <PageActionDescriptor>(descriptor => Task.FromResult(new CompiledPageActionDescriptor { Endpoint = descriptor.DisplayName switch { "/Index" => LoadedEndpoints[0], "/About" => LoadedEndpoints[1], "/ReplacedEndpoint" => LoadedEndpoints[2], _ => throw new InvalidOperationException($"Invalid endpoint '{descriptor.DisplayName}'.") } }));
public DynamicPageEndpointMatcherPolicyTest() { var actions = new ActionDescriptor[] { new PageActionDescriptor() { RouteValues = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase) { ["page"] = "/Index", }, }, new PageActionDescriptor() { RouteValues = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase) { ["page"] = "/About", }, }, }; PageEndpoints = new[] { new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(actions[0]), "Test1"), new Endpoint(_ => Task.CompletedTask, new EndpointMetadataCollection(actions[1]), "Test2"), }; DynamicEndpoint = new Endpoint( _ => Task.CompletedTask, new EndpointMetadataCollection(new object[] { new DynamicPageRouteValueTransformerMetadata(typeof(CustomTransformer)), }), "dynamic"); DataSource = new DefaultEndpointDataSource(PageEndpoints); Selector = new TestDynamicPageEndpointSelector(DataSource); var services = new ServiceCollection(); services.AddRouting(); services.AddScoped <CustomTransformer>(s => { var transformer = new CustomTransformer(); transformer.Transform = (c, values) => Transform(c, values); return(transformer); }); Services = services.BuildServiceProvider(); Comparer = Services.GetRequiredService <EndpointMetadataComparer>(); LoadedEndpoint = new Endpoint(_ => Task.CompletedTask, EndpointMetadataCollection.Empty, "Loaded"); var loader = new Mock <PageLoader>(); loader .Setup(l => l.LoadAsync(It.IsAny <PageActionDescriptor>())) .Returns(Task.FromResult(new CompiledPageActionDescriptor() { Endpoint = LoadedEndpoint, })); Loader = loader.Object; }