public async Task ApplyAsync_HasMatchNoEndpointFound() { // Arrange var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; var scores = new[] { 0, }; var candidates = new CandidateSet(endpoints, values, scores); Transform = (c, values) => { return(new ValueTask <RouteValueDictionary>(new RouteValueDictionary())); }; var httpContext = new DefaultHttpContext() { RequestServices = Services, }; // Act await policy.ApplyAsync(httpContext, candidates); // Assert Assert.Null(candidates[0].Endpoint); Assert.Null(candidates[0].Values); Assert.False(candidates.IsValidCandidate(0)); }
public async Task ApplyAsync_NoMatch() { // Arrange var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { null, }; var scores = new[] { 0, }; var candidates = new CandidateSet(endpoints, values, scores); candidates.SetValidity(0, false); Transform = (c, values) => { throw new InvalidOperationException(); }; var httpContext = new DefaultHttpContext() { RequestServices = Services, }; // Act await policy.ApplyAsync(httpContext, candidates); // Assert Assert.False(candidates.IsValidCandidate(0)); }
public async Task ApplyAsync_HasMatchFindsEndpoint_WithRouteValues() { // Arrange var policy = new DynamicPageEndpointMatcherPolicy(Selector, Loader, Comparer); var endpoints = new[] { DynamicEndpoint, }; var values = new RouteValueDictionary[] { new RouteValueDictionary(new { slug = "test", }), }; var scores = new[] { 0, }; var candidates = new CandidateSet(endpoints, values, scores); Transform = (c, values) => { return(new ValueTask <RouteValueDictionary>(new RouteValueDictionary(new { page = "/Index", }))); }; var httpContext = new DefaultHttpContext() { RequestServices = Services, }; // Act await policy.ApplyAsync(httpContext, candidates); // Assert Assert.Same(LoadedEndpoint, candidates[0].Endpoint); Assert.Collection( candidates[0].Values.OrderBy(kvp => kvp.Key), kvp => { Assert.Equal("page", kvp.Key); Assert.Equal("/Index", kvp.Value); }, kvp => { Assert.Equal("slug", kvp.Key); Assert.Equal("test", kvp.Value); }); Assert.True(candidates.IsValidCandidate(0)); }