GetValidationAsHtmlAsync(TagHelperContext context, TagHelperOutput output, TagHelperOutput inputTag)
+ {
+ return Task.FromResult(string.Empty);
+ }
+
+ protected override void AddGroupToFormGroupContents(TagHelperContext context, string propertyName, string html, int order, out bool suppress)
+ {
+ LastGroupHtml = html;
+ suppress = false;
+ }
+ }
+
+ private sealed class FakeTagHelperLocalizer : IAbpTagHelperLocalizer
+ {
+ public string GetLocalizedText(string text, ModelExplorer explorer) => text;
+
+ public IStringLocalizer? GetLocalizerOrNull(ModelExplorer explorer) => null;
+
+ public IStringLocalizer? GetLocalizerOrNull(Assembly assembly) => null;
+ }
}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Bootstrap/TagHelpers/Form/AbpSelectTagHelperService_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Bootstrap/TagHelpers/Form/AbpSelectTagHelperService_Tests.cs
new file mode 100644
index 0000000000..9c2e90ca25
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Bootstrap/TagHelpers/Form/AbpSelectTagHelperService_Tests.cs
@@ -0,0 +1,246 @@
+#nullable enable
+
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text.Encodings.Web;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc.ModelBinding;
+using Microsoft.AspNetCore.Mvc.ViewFeatures;
+using Microsoft.AspNetCore.Razor.TagHelpers;
+using Microsoft.Extensions.Localization;
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
+
+public class AbpSelectTagHelperService_Tests
+{
+ [Fact]
+ public async Task Info_text_should_be_rendered_as_div_with_form_text_class()
+ {
+ var service = new TestAbpSelectTagHelperService();
+ var tagHelper = new AbpSelectTagHelper(service)
+ {
+ AspFor = CreateModelExpression(),
+ InfoText = "Description"
+ };
+
+ var output = CreateOutput();
+
+ await tagHelper.ProcessAsync(CreateContext(), output);
+
+ service.LastGroupHtml.ShouldContain(" a.Name == "aria-describedby").ToList();
+ ariaDescribedby.Count.ShouldBe(1);
+ ariaDescribedby[0].Value.ToString().ShouldBe("TestSelectInfoText");
+ }
+
+ private static TagHelperContext CreateContext()
+ {
+ return new TagHelperContext(
+ new TagHelperAttributeList(),
+ new Dictionary