File: HtmlGeneratorUtilities.cs
Web Access
Project: src\src\Mvc\shared\Mvc.Views.TestCommon\Microsoft.AspNetCore.Mvc.Views.TestCommon.csproj (Microsoft.AspNetCore.Mvc.Views.TestCommon)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Antiforgery;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.WebEncoders.Testing;
using Moq;
 
namespace Microsoft.AspNetCore.Mvc.ViewFeatures;
 
public static class HtmlGeneratorUtilities
{
    public static IHtmlGenerator GetHtmlGenerator(IModelMetadataProvider provider)
    {
        var options = new MvcViewOptions();
        var urlHelperFactory = new Mock<IUrlHelperFactory>();
        urlHelperFactory
            .Setup(f => f.GetUrlHelper(It.IsAny<ActionContext>()))
            .Returns(Mock.Of<IUrlHelper>());
 
        return GetHtmlGenerator(provider, urlHelperFactory.Object, options);
    }
 
    public static IHtmlGenerator GetHtmlGenerator(IModelMetadataProvider provider, IUrlHelperFactory urlHelperFactory, MvcViewOptions options)
    {
        var optionsAccessor = new Mock<IOptions<MvcViewOptions>>();
        optionsAccessor
            .SetupGet(o => o.Value)
            .Returns(options);
 
        var attributeProvider = new DefaultValidationHtmlAttributeProvider(
            optionsAccessor.Object,
            provider,
            new ClientValidatorCache());
 
        var htmlGenerator = new DefaultHtmlGenerator(
                Mock.Of<IAntiforgery>(),
                optionsAccessor.Object,
                provider,
                urlHelperFactory,
                new HtmlTestEncoder(),
                attributeProvider);
        return htmlGenerator;
    }
}