public void Replace_WithKeywordSurroundedByUnderscores_IsNotExpanded()
        {
            //arrange
            var keywords = new List<KeyWord>
            {
                new KeyWord
                {
                    Word = "is",
                    Text = "is",
                    Url = "http://example.com/{0}",
                }
            };
            var keywordExpander = new KeywordExpander(keywords);

            //act
            string result = keywordExpander.Transform(" _is_ ");

            //assert
            Assert.AreEqual(" _is_ ", result);
        }
        public void Replace_WithStringContainingKeywordInAnotherWord_DoesNotExpandKeyword()
        {
            //arrange
            var keywords = new List<KeyWord>
            {
                new KeyWord
                {
                    Word = "is",
                    Text = "is",
                    Url = "http://example.com/",
                }
            };
            var keywordExpander = new KeywordExpander(keywords);

            //act
            string result = keywordExpander.Transform("This should not expand");

            //assert
            Assert.AreEqual("This should not expand", result);
        }
        public void Ctor_WithRepository_GetsKeywordsFromRepository()
        {
            //arrange
            var keywords = new List<KeyWord>
            {
                new KeyWord
                {
                    Word = "is",
                    Text = "is",
                    Url = "http://example.com/",
                }
            };
            var repository = new Mock<ObjectRepository>();
            repository.Setup(r => r.GetKeyWords()).Returns(keywords);

            //act
            var keywordExpander = new KeywordExpander(keywords);

            //assert
            Assert.AreEqual(keywords, keywordExpander.Keywords);
        }
        public void CreateBlogPost_WithEntryPublisher_RemovesKeywordExpander()
        {
            // arrange
            var context = new Mock<ISubtextContext>();
            context.Setup(c => c.Blog).Returns(new Blog());
            context.Setup(c => c.Repository.Create(It.IsAny<Entry>(), It.IsAny<IEnumerable<int>>()));
            var transformation = new CompositeTextTransformation();
            var searchengine = new Mock<IIndexingService>();
            var entryPublisher = new EntryPublisher(context.Object, transformation, null, searchengine.Object);
            var keywordExpander = new KeywordExpander((IEnumerable<KeyWord>)null);
            transformation.Add(keywordExpander);
            var blog = new BlogMLBlog() { Title = "MyBlog" };
            var post = new BlogMLPost();
            var repository = new BlogImportRepository(context.Object, null, entryPublisher, new BlogMLImportMapper());

            // act
            repository.CreateBlogPost(blog, post);

            // assert
            Assert.IsFalse(transformation.Contains(keywordExpander));
        }
        public void Replace_WithStringContainingKeywordInsideAnchorTagAttribute_DoesNotExpandKeyword()
        {
            //arrange
            var keywords = new List<KeyWord>
            {
                new KeyWord
                {
                    Word = "keyword",
                    Text = "keyword",
                    Url = "http://example.com/",
                }
            };
            var keywordExpander = new KeywordExpander(keywords);

            //act
            string result = keywordExpander.Transform("<a title=\"keyword\" href=\"http://x\">test</a>");

            //assert
            Assert.AreEqual("<a title=\"keyword\" href=\"http://x\">test</a>", result);
        }
        public void Transform_WithStringContainingBrackets_ReturnsConvertedKeywordAndBrackets()
        {
            //arrange
            var keywords = new List<KeyWord>
            {
                new KeyWord
                {
                    Word = "OLD",
                    Text = "NEW",
                    Url = "http://example.com/",
                    Title = "NEW",
                    ReplaceFirstTimeOnly = false
                }
            };
            var keywordExpander = new KeywordExpander(keywords);

            //act
            string result = keywordExpander.Transform("OLD {} OLD {}");

            //assert
            Assert.AreEqual(@"<a href=""http://example.com/"" title=""NEW"">NEW</a> {} <a href=""http://example.com/"" title=""NEW"">NEW</a> {}", result);
        }
        public void Replace_WithStringContainingKeyword_IsNotCaseSensitive()
        {
            //arrange
            var keywords = new List<KeyWord>
            {
                new KeyWord
                {
                    Word = "is",
                    Text = "is",
                    Url = "http://example.com/",
                }
            };
            var keywordExpander = new KeywordExpander(keywords);

            //act
            string result = keywordExpander.Transform(" it IS true ");

            //assert
            Assert.AreEqual(" it <a href=\"http://example.com/\">is</a> true ", result);
        }
        public void Replace_WithStringContainingKeyword_ExpandsKeywordWithTitle()
        {
            //arrange
            var keywords = new List<KeyWord>
            {
                new KeyWord
                {
                    Word = "sucky example",
                    Text = "cool example",
                    Url = "http://example.com/",
                    Title = "the title"
                }
            };
            var keywordExpander = new KeywordExpander(keywords);

            //act
            string result = keywordExpander.Transform("This is a sucky example");

            //assert
            Assert.AreEqual("This is a <a href=\"http://example.com/\" title=\"the title\">cool example</a>", result);
        }