public void Init_CreatesHtmlLocalizerFromViewContext(string appName, string viewPath, string executionPath, string expectedBaseName)
        {
            var hostingEnvironment = new Mock <IHostingEnvironment>();

            hostingEnvironment.Setup(a => a.ApplicationName).Returns(appName);
            var factoryMock = TestHelper.CreateFactoryMock(true);
            var view        = new Mock <IView>();

            view.Setup(v => v.Path).Returns(viewPath);
            var viewContext = new ViewContext();

            viewContext.ExecutingFilePath = executionPath;
            viewContext.View = view.Object;
            var tagHelper = new GenericLocalizeTagHelper(factoryMock.Object, hostingEnvironment.Object, null);

            tagHelper.ViewContext = viewContext;
            var context = TestHelper.CreateTagContext();

            tagHelper.Init(context);

            factoryMock.Verify(x => x.Create(expectedBaseName, appName), Times.Once());
        }
        public async Task ProcessAsync_DoesNotHtmlEncodeWhenGloballyDisabled()
        {
            const string expected = "<a href=\"https://google.com\">Hello</a>";

            var localizer = TestHelper.CreateLocalizerMock(false);

            SetupLocalizer(localizer, expected, expected, true);
            var factory        = TestHelper.CreateFactoryMock(localizer.Object);
            var hostingEnvMock = new Mock <IHostingEnvironment>();

            hostingEnvMock.SetupGet(x => x.ApplicationName).Returns(TestHelper.ApplicationName);

            var options = Options.Create(new LocalizeTagHelperOptions {
                HtmlEncodeByDefault = false, NewLineHandling = NewLineHandling.None, TrimWhitespace = false
            });
            var helper = new GenericLocalizeTagHelper(factory.Object, hostingEnvMock.Object, options)
            {
                ViewContext = TestHelper.DefaultViewContext
            };
            var result = await TestHelper.GenerateHtmlAsync(helper, "p", expected);

            localizer.Verify(x => x[expected], Times.Once());
            Assert.Equal("<p>" + expected + "</p>", result);
        }