public static string GenerateLink( this IUrlHelper urlHelper, LinkGenerationTestContext linkGenerationTestContext, ControllerTestContext controllerTestContext) { string uri = null; if (!string.IsNullOrWhiteSpace(linkGenerationTestContext.Location)) { uri = linkGenerationTestContext.Location; } else if (!string.IsNullOrWhiteSpace(linkGenerationTestContext.RouteName)) { uri = urlHelper.RouteUrl( linkGenerationTestContext.RouteName, linkGenerationTestContext.RouteValues); } else { linkGenerationTestContext.Action = linkGenerationTestContext.Action ?? controllerTestContext.RouteData.Values["action"] as string ?? controllerTestContext.ActionName; linkGenerationTestContext.Controller = linkGenerationTestContext.Controller ?? controllerTestContext.RouteData.Values["controller"] as string ?? controllerTestContext.ControllerContext.ActionDescriptor.ControllerName; uri = urlHelper.Action( linkGenerationTestContext.Action, linkGenerationTestContext.Controller, linkGenerationTestContext.RouteValues); } return uri; }
public static void Validate( ControllerTestContext controllerTestContext, LinkGenerationTestContext linkGenerationTestContext, LambdaExpression expectedRouteValuesAsLambdaExpression, Action<string, string, string> failedValidationAction) { var actionContext = controllerTestContext.ComponentContext; if (!actionContext.RouteData.Routers.Any()) { actionContext.RouteData.Routers.Add(TestApplication.Router); } var urlHelper = linkGenerationTestContext.UrlHelper ?? TestServiceProvider .GetRequiredService<IUrlHelperFactory>() .GetUrlHelper(actionContext); ICollection<string> ignoredRouteKeys; var expectedUri = urlHelper.ExpressionLink( expectedRouteValuesAsLambdaExpression, out ignoredRouteKeys); var actualUri = urlHelper.GenerateLink( linkGenerationTestContext, controllerTestContext, ignoredRouteKeys); if (!string.Equals(expectedUri, actualUri, StringComparison.OrdinalIgnoreCase)) { failedValidationAction( "to have resolved location to", $"{expectedUri.GetErrorMessageName()}", $"in fact received {actualUri.GetErrorMessageName()}"); } }
private static IAndRedirectTestBuilder ProcessRouteLambdaExpression <TController>( dynamic redirectTestBuilder, LambdaExpression actionCall) { redirectTestBuilder.IncludeCountCheck = false; ExpressionLinkValidator.Validate( redirectTestBuilder.TestContext, LinkGenerationTestContext.FromRedirectResult(redirectTestBuilder.ActionResult), actionCall, new Action <string, string, string>((pr, exp, act) => redirectTestBuilder.ThrowNewRedirectResultAssertionException(pr, exp, act))); return(redirectTestBuilder); }
private static IAndCreatedTestBuilder ProcessRouteLambdaExpression <TController>( dynamic createdTestBuilder, LambdaExpression actionCall) { createdTestBuilder.IncludeCountCheck = false; ExpressionLinkValidator.Validate( createdTestBuilder.TestContext, LinkGenerationTestContext.FromCreatedResult(createdTestBuilder.TestContext.MethodResult as IActionResult), actionCall, new Action <string, string, string>((pr, exp, act) => createdTestBuilder.ThrowNewCreatedResultAssertionException(pr, exp, act))); return(createdTestBuilder); }
public static string GenerateLink( this IUrlHelper urlHelper, LinkGenerationTestContext linkGenerationTestContext, ControllerTestContext controllerTestContext, ICollection <string> ignoredRouteKeys = null) { if (ignoredRouteKeys != null) { linkGenerationTestContext.RouteValues = linkGenerationTestContext .RouteValues ?.Where(kvp => !ignoredRouteKeys.Contains(kvp.Key)) .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); } string uri = null; if (!string.IsNullOrWhiteSpace(linkGenerationTestContext.Location)) { uri = linkGenerationTestContext.Location; } else if (!string.IsNullOrWhiteSpace(linkGenerationTestContext.RouteName)) { uri = urlHelper.RouteUrl( linkGenerationTestContext.RouteName, linkGenerationTestContext.RouteValues); } else { linkGenerationTestContext.Action = linkGenerationTestContext.Action ?? controllerTestContext.RouteData.Values["action"] as string ?? controllerTestContext.MethodName; linkGenerationTestContext.Controller = linkGenerationTestContext.Controller ?? controllerTestContext.RouteData.Values["controller"] as string ?? controllerTestContext.ComponentContext.ActionDescriptor.ControllerName; uri = urlHelper.Action( linkGenerationTestContext.Action, linkGenerationTestContext.Controller, linkGenerationTestContext.RouteValues); } return(uri); }
private static IAndAcceptedTestBuilder ProcessRouteLambdaExpression( IAcceptedTestBuilder acceptedTestBuilder, LambdaExpression actionCall) { var actualBuilder = GetActualBuilder(acceptedTestBuilder); actualBuilder.IncludeCountCheck = false; var controllerTestContext = actualBuilder.TestContext as ControllerTestContext; var actionResult = actualBuilder.TestContext.MethodResult as IActionResult; ExpressionLinkValidator.Validate( controllerTestContext, LinkGenerationTestContext.FromAcceptedResult(actionResult), actionCall, actualBuilder.ThrowNewFailedValidationException); return((IAndAcceptedTestBuilder)acceptedTestBuilder); }
public static string GenerateLink( this IUrlHelper urlHelper, LinkGenerationTestContext linkGenerationTestContext, ControllerTestContext controllerTestContext, ICollection<string> ignoredRouteKeys = null) { if (ignoredRouteKeys != null) { linkGenerationTestContext.RouteValues = linkGenerationTestContext .RouteValues ?.Where(kvp => !ignoredRouteKeys.Contains(kvp.Key)) .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); } string uri = null; if (!string.IsNullOrWhiteSpace(linkGenerationTestContext.Location)) { uri = linkGenerationTestContext.Location; } else if (!string.IsNullOrWhiteSpace(linkGenerationTestContext.RouteName)) { uri = urlHelper.RouteUrl( linkGenerationTestContext.RouteName, linkGenerationTestContext.RouteValues); } else { linkGenerationTestContext.Action = linkGenerationTestContext.Action ?? controllerTestContext.RouteData.Values["action"] as string ?? controllerTestContext.MethodName; linkGenerationTestContext.Controller = linkGenerationTestContext.Controller ?? controllerTestContext.RouteData.Values["controller"] as string ?? controllerTestContext.ComponentContext.ActionDescriptor.ControllerName; uri = urlHelper.Action( linkGenerationTestContext.Action, linkGenerationTestContext.Controller, linkGenerationTestContext.RouteValues); } return uri; }