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; }
}
Last updated: 7/24/2024 8:51:21 AM

Latest Updates

© 0 - 2025 - Mike Brind.
All rights reserved.
Contact me at Mike dot Brind at Outlook.com