Class for setting up PageModel for unit testing
public static class TestHelpers
{
public static void HydratePageModel(this PageModel page, ClaimsPrincipal user = null)
{
var setup = SetUpPageModel(user);
page.PageContext = setup.PageContext;
page.TempData = setup.TempData;
page.Url = setup.Url;
page.MetadataProvider = setup.MetadataProvider;
}
static PageModelSetup SetUpPageModel(ClaimsPrincipal user = null)
{
var httpContext = new DefaultHttpContext(){User = user};
var modelState = new ModelStateDictionary();
var actionContext = new ActionContext(httpContext, new RouteData(), new PageActionDescriptor(), modelState);
var modelMetadataProvider = new EmptyModelMetadataProvider();
var viewData = new ViewDataDictionary(modelMetadataProvider, modelState);
var tempData = new TempDataDictionary(httpContext, Mock.Of<ITempDataProvider>());
var pageContext = new PageContext(actionContext)
{
ViewData = viewData,
};
return new PageModelSetup
{
PageContext = pageContext,
TempData = tempData,
Url = new UrlHelper(actionContext),
MetadataProvider = modelMetadataProvider,
};
}
}
public class PageModelSetup
{
public PageContext PageContext { get; set; }
public ITempDataDictionary TempData { get; set; }
public IUrlHelper Url { get; set; }
public IModelMetadataProvider MetadataProvider { get; set; }
}