/// <summary> /// Sets the default configuration. /// </summary> /// <returns>The short string helper.</returns> public DefaultShortStringHelperConfig WithDefault(RequestHandlerSettings requestHandlerSettings) { IEnumerable <IChar> charCollection = requestHandlerSettings.GetCharReplacements(); UrlReplaceCharacters = charCollection .Where(x => string.IsNullOrEmpty(x.Char) == false) .ToDictionary(x => x.Char, x => x.Replacement); var urlSegmentConvertTo = CleanStringType.Utf8; if (requestHandlerSettings.ShouldConvertUrlsToAscii) { urlSegmentConvertTo = CleanStringType.Ascii; } if (requestHandlerSettings.ShouldTryConvertUrlsToAscii) { urlSegmentConvertTo = CleanStringType.TryAscii; } return(WithConfig(CleanStringType.UrlSegment, new Config { PreFilter = ApplyUrlReplaceCharacters, PostFilter = x => CutMaxLength(x, 240), IsTerm = (c, leading) => char.IsLetterOrDigit(c) || c == '_', // letter, digit or underscore StringType = urlSegmentConvertTo | CleanStringType.LowerCase, BreakTermsOnUpper = false, Separator = '-' }).WithConfig(CleanStringType.FileName, new Config { PreFilter = ApplyUrlReplaceCharacters, IsTerm = (c, leading) => char.IsLetterOrDigit(c) || c == '_', // letter, digit or underscore StringType = CleanStringType.Utf8 | CleanStringType.LowerCase, BreakTermsOnUpper = false, Separator = '-' }).WithConfig(CleanStringType.Alias, new Config { PreFilter = ApplyUrlReplaceCharacters, IsTerm = (c, leading) => leading ? char.IsLetter(c) // only letters : (char.IsLetterOrDigit(c) || c == '_'), // letter, digit or underscore StringType = CleanStringType.Ascii | CleanStringType.UmbracoCase, BreakTermsOnUpper = false }).WithConfig(CleanStringType.UnderscoreAlias, new Config { PreFilter = ApplyUrlReplaceCharacters, IsTerm = (c, leading) => char.IsLetterOrDigit(c) || c == '_', // letter, digit or underscore StringType = CleanStringType.Ascii | CleanStringType.UmbracoCase, BreakTermsOnUpper = false }).WithConfig(CleanStringType.ConvertCase, new Config { PreFilter = null, IsTerm = (c, leading) => char.IsLetterOrDigit(c) || c == '_', // letter, digit or underscore StringType = CleanStringType.Ascii, BreakTermsOnUpper = true })); }
public void Given_CharCollection_With_DefaultDisabled_ReturnsUserCollection() { var userCollection = new CharItem[] { new () { Char = "test", Replacement = "replace" }, new () { Char = "test2", Replacement = "replace2" } }; var settings = new RequestHandlerSettings { UserDefinedCharCollection = userCollection, EnableDefaultCharReplacements = false }; var actual = settings.GetCharReplacements().ToList(); Assert.AreEqual(userCollection.Length, actual.Count); Assert.That(actual, Is.EquivalentTo(userCollection)); }
public void Given_CharCollection_That_OverridesDefaultValues_ReturnsReplacements() { var userCollection = new CharItem[] { new () { Char = "%", Replacement = "percent" }, new () { Char = ".", Replacement = "dot" } }; var settings = new RequestHandlerSettings { UserDefinedCharCollection = userCollection }; var actual = settings.GetCharReplacements().ToList(); Assert.AreEqual(RequestHandlerSettings.DefaultCharCollection.Length, actual.Count); Assert.That(actual, Has.Exactly(1).Matches <CharItem>(x => x.Char == "%" && x.Replacement == "percent")); Assert.That(actual, Has.Exactly(1).Matches <CharItem>(x => x.Char == "." && x.Replacement == "dot")); Assert.That(actual, Has.Exactly(0).Matches <CharItem>(x => x.Char == "%" && x.Replacement == string.Empty)); Assert.That(actual, Has.Exactly(0).Matches <CharItem>(x => x.Char == "." && x.Replacement == string.Empty)); }
public void Given_CharCollection_With_DefaultEnabled_MergesCollection() { var userCollection = new CharItem[] { new() { Char = "test", Replacement = "replace" }, new() { Char = "test2", Replacement = "replace2" }, }; var settings = new RequestHandlerSettings { UserDefinedCharCollection = userCollection }; var actual = settings.GetCharReplacements().ToList(); var expectedCollection = RequestHandlerSettings.DefaultCharCollection.ToList(); expectedCollection.AddRange(userCollection); Assert.AreEqual(expectedCollection.Count, actual.Count); Assert.That(actual, Is.EquivalentTo(expectedCollection)); }
public void Given_CharCollection_That_OverridesDefaultValues_And_ContainsNew_ReturnsMergedWithReplacements() { var userCollection = new CharItem[] { new() { Char = "%", Replacement = "percent" }, new() { Char = ".", Replacement = "dot" }, new() { Char = "new", Replacement = "new" }, }; var settings = new RequestHandlerSettings { UserDefinedCharCollection = userCollection }; var actual = settings.GetCharReplacements().ToList(); // Add 1 to the length, because we're expecting to only add one new one Assert.AreEqual(RequestHandlerSettings.DefaultCharCollection.Length + 1, actual.Count); Assert.That(actual, Has.Exactly(1).Matches <CharItem>(x => x.Char == "%" && x.Replacement == "percent")); Assert.That(actual, Has.Exactly(1).Matches <CharItem>(x => x.Char == "." && x.Replacement == "dot")); Assert.That(actual, Has.Exactly(1).Matches <CharItem>(x => x.Char == "new" && x.Replacement == "new")); Assert.That(actual, Has.Exactly(0).Matches <CharItem>(x => x.Char == "%" && x.Replacement == string.Empty)); Assert.That(actual, Has.Exactly(0).Matches <CharItem>(x => x.Char == "." && x.Replacement == string.Empty)); }