public void use_should_throw_when_middleware_is_null()
        {
            // given, when
            var builder = new TextMiddlewareBuilder(_logger);

            // then
            Assert.Throws <ArgumentNullException>(() => builder.Use(null));
        }
        private TextMiddlewareBuilder CreateBuilderWithoutParser()
        {
            var builder           = new TextMiddlewareBuilder(_logger);
            var settings          = new TextSettings();
            var whiteListProvider = Substitute.For <IHtmlWhiteListProvider>();

            builder.Use(new CustomTokenMiddleware(new CustomTokenParser(settings, _logger)))
            .Use(new HarmfulTagMiddleware(new HtmlSanitizerFactory(settings, whiteListProvider)))
            .Use(new TextPluginAfterParseMiddleware(new TextPluginRunner()));

            return(builder);
        }
        public void execute_should_swallow_exceptions()
        {
            // given
            string markup      = "item1 item2";
            var    builder     = new TextMiddlewareBuilder(_logger);
            var    middleware1 = new MiddleWareMock()
            {
                SearchString = null, Replacement = null
            };

            builder.Use(middleware1);

            // when
            string result = builder.Execute(markup);

            // then
            Assert.Equal("item1 item2", result);
        }
        public void use_should_add_middleware_and_execute_should_concatenate_values_from_middleware()
        {
            // given
            string markup      = "item1 item2";
            var    builder     = new TextMiddlewareBuilder(_logger);
            var    middleware1 = new MiddleWareMock()
            {
                SearchString = "item1", Replacement = "value1"
            };
            var middleware2 = new MiddleWareMock()
            {
                SearchString = "item2", Replacement = "value2"
            };

            builder.Use(middleware1);
            builder.Use(middleware2);

            // when
            string result = builder.Execute(markup);

            // then
            Assert.Equal("value1 value2", result);
        }