Esempio n. 1
0
        public void ConvertTitleToSlug_WithNullEntry_ThrowsArgumentNullException()
        {
            //arrange
            var generator = new SlugGenerator(null);

            //act, assert
            UnitTestHelper.AssertThrowsArgumentNullException(() => generator.GetSlugFromTitle(null));
        }
Esempio n. 2
0
        public void ConvertTitleToSlug_WithNullOrEmptyTitle_ThrowsArgumentException()
        {
            //arrange
            var generator = new SlugGenerator(null);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = string.Empty
            };

            //act, assert
            UnitTestHelper.AssertThrows <ArgumentException>(() => generator.GetSlugFromTitle(entry));
        }
Esempio n. 3
0
        public void ConvertTitleToSlug_WithSpacesInTitle_ReplacesSpacesInTitle()
        {
            //arrange
            var generator = new SlugGenerator(null);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "this is a test"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("this-is-a-test", slug);
        }
Esempio n. 4
0
        public void ConvertTitleToSlug_WithAllNumericTitle_PrependsLetterNToAvoidConflicts()
        {
            //arrange
            var generator = new SlugGenerator(null);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = @"1234"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("n_1234", slug);
        }
Esempio n. 5
0
        public void ConvertTitleToSlug_WithNonWordCharacters_RemoveNonWordCharacters()
        {
            //arrange
            var generator = new SlugGenerator(null);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = @"[!""'`;:~@#foo$%^&-bar*(){\[}\]?+/=\\|<>_baz"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("foo-bar_baz", slug);
        }
Esempio n. 6
0
        public void ConvertTitleToSlug_WithNonEuropeanInternationalizedTitles_ConvertsToUrlEncodedTitle()
        {
            //arrange
            var generator = new SlugGenerator(null);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "안-녕하십니까"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("%ec%95%88-%eb%85%95%ed%95%98%ec%8b%ad%eb%8b%88%ea%b9%8c", slug);
        }
Esempio n. 7
0
        public void ConvertTitleToSlug_WithInternationalizedTitles_ConvertsToAnsiUrlSlug()
        {
            //arrange
            var generator = new SlugGenerator(null);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "Åñçhòr çùè Héllò wörld"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("anchor-cue-hello-world", slug);
        }
Esempio n. 8
0
        public void ConvertTitleToSlug_WithSlugAndAllPrefixesMatchingExistingEntries_ThrowsException()
        {
            //arrange
            var repository = new Mock <ObjectRepository>();

            repository.Setup(r => r.GetEntry(It.IsAny <string>(), false, false)).Returns(new Entry(PostType.BlogPost));
            repository.Setup(r => r.GetEntry("foo-bar-again", false, false)).Returns((Entry)null);
            var generator = new SlugGenerator(null, repository.Object);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = @"foo bar"
            };

            //act, assert
            UnitTestHelper.AssertThrows <InvalidOperationException>(() => generator.GetSlugFromTitle(entry));
        }
Esempio n. 9
0
        public void ConvertTitleToSlug_WithSlugMatchingExistingEntry_AppendsAgainToSlug()
        {
            //arrange
            var repository = new Mock <ObjectRepository>();

            repository.Setup(r => r.GetEntry("foo-bar", false, false)).Returns(new Entry(PostType.BlogPost));
            repository.Setup(r => r.GetEntry("foo-bar-Again", false, false)).Returns((Entry)null);
            var generator = new SlugGenerator(null, repository.Object);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = @"foo bar"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("foo-bar-again", slug);
        }
Esempio n. 10
0
        public void ConvertTitleToSlug_WithNullCharacterDelimiterAndSpacesInTitle_RemovesSpacesAndPascalCasesTitle()
        {
            //arrange
            var config = new NameValueCollection();

            config.Add("limitWordCount", "10");
            config.Add("separatingCharacter", "");
            var settings  = new FriendlyUrlSettings(config);
            var generator = new SlugGenerator(settings);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = " this is a test "
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("ThisIsATest", slug);
        }
Esempio n. 11
0
        public void ConvertTitleToSlug_WithTitleEndingInPeriod_RemovesTrailingPeriod()
        {
            //arrange
            var config = new NameValueCollection();

            config.Add("limitWordCount", "10");
            config.Add("separatingCharacter", "-");
            var settings  = new FriendlyUrlSettings(config);
            var generator = new SlugGenerator(settings);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "a test."
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("a-test", slug);
        }
Esempio n. 12
0
        public void ConvertTitleToSlug_UsingDash_NormalizesDashes()
        {
            //arrange
            var config = new NameValueCollection();

            config.Add("limitWordCount", "10");
            config.Add("separatingCharacter", "-");
            var settings  = new FriendlyUrlSettings(config);
            var generator = new SlugGenerator(settings);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "-this - is - a - test-"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("this-is-a-test", slug);
        }
Esempio n. 13
0
        public void ConvertTitleToSlug_WithDotSeparator_UsesDot()
        {
            //arrange
            var config = new NameValueCollection();

            config.Add("limitWordCount", "10");
            config.Add("separatingCharacter", ".");
            var settings  = new FriendlyUrlSettings(config);
            var generator = new SlugGenerator(settings);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "this is a test"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("this.is.a.test", slug);
        }
Esempio n. 14
0
        public void ConvertTitleToSlug_WithMoreWordsThanAllowed_TruncatesRemainingWords()
        {
            //arrange
            var config = new NameValueCollection();

            config.Add("limitWordCount", "2");
            config.Add("separatingCharacter", "_");
            var settings  = new FriendlyUrlSettings(config);
            var generator = new SlugGenerator(settings);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "this is a test"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("this_is", slug);
        }
Esempio n. 15
0
        public void ConvertTitleToSlug_WithTextTransformToUpperCase_TransformsUrlToUpperCase()
        {
            //arrange
            var config = new NameValueCollection();

            config.Add("limitWordCount", "10");
            config.Add("separatingCharacter", ".");
            config.Add("TextTransform", "UpperCase");
            var settings  = new FriendlyUrlSettings(config);
            var generator = new SlugGenerator(settings);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = "this is a test"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("THIS.IS.A.TEST", slug);
        }
        public void ConvertTitleToSlug_WithSlugMatchingFiveExistingEntries_AppendsUniqueSuffixToSlug()
        {
            //arrange
            var repository = new Mock <ObjectProvider>();

            repository.Setup(r => r.GetEntry("foo-bar", false, false)).Returns(new Entry(PostType.BlogPost));
            repository.Setup(r => r.GetEntry("foo-bar-Again", false, false)).Returns(new Entry(PostType.BlogPost));
            repository.Setup(r => r.GetEntry("foo-bar-Yet-Again", false, false)).Returns(new Entry(PostType.BlogPost));
            repository.Setup(r => r.GetEntry("foo-bar-And-Again", false, false)).Returns(new Entry(PostType.BlogPost));
            repository.Setup(r => r.GetEntry("foo-bar-Once-Again", false, false)).Returns(new Entry(PostType.BlogPost));
            repository.Setup(r => r.GetEntry("foo-bar-Once-More", false, false)).Returns((Entry)null);
            var generator = new SlugGenerator(null, repository.Object);
            var entry     = new Entry(PostType.BlogPost)
            {
                Title = @"foo bar"
            };

            //act
            string slug = generator.GetSlugFromTitle(entry);

            //act
            Assert.AreEqual("foo-bar-once-more", slug);
        }