diff --git a/src/BirdsiteLive.Domain/Tools/ModerationParser.cs b/src/BirdsiteLive.Domain/Tools/ModerationParser.cs index 51dd979..888fe64 100644 --- a/src/BirdsiteLive.Domain/Tools/ModerationParser.cs +++ b/src/BirdsiteLive.Domain/Tools/ModerationParser.cs @@ -13,7 +13,8 @@ namespace BirdsiteLive.Domain.Tools var splitEntries = entry .Split(new[] {separationChar}, StringSplitOptions.RemoveEmptyEntries) - .Select(x => x.ToLowerInvariant()); + .Where(x => !string.IsNullOrWhiteSpace(x)) + .Select(x => x.ToLowerInvariant().Trim()); return splitEntries.ToArray(); } } diff --git a/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationParserTests.cs b/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationParserTests.cs new file mode 100644 index 0000000..8284a1b --- /dev/null +++ b/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationParserTests.cs @@ -0,0 +1,121 @@ +using System.Linq; +using BirdsiteLive.Domain.Tools; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BirdsiteLive.Domain.Tests.Tools +{ + [TestClass] + public class ModerationParserTests + { + [TestMethod] + public void Parse_Simple_Test() + { + #region Stubs + var entry = "test"; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(1, result.Length); + Assert.AreEqual("test", result.First()); + #endregion + } + + [TestMethod] + public void Parse_PipeSeparator_Test() + { + #region Stubs + var entry = "test|test2"; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(2, result.Length); + Assert.AreEqual("test", result[0]); + Assert.AreEqual("test2", result[1]); + #endregion + } + + [TestMethod] + public void Parse_SemicolonSeparator_Test() + { + #region Stubs + var entry = "test;test2"; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(2, result.Length); + Assert.AreEqual("test", result[0]); + Assert.AreEqual("test2", result[1]); + #endregion + } + + [TestMethod] + public void Parse_CommaSeparator_Test() + { + #region Stubs + var entry = "test,test2"; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(2, result.Length); + Assert.AreEqual("test", result[0]); + Assert.AreEqual("test2", result[1]); + #endregion + } + + [TestMethod] + public void Parse_SemicolonSeparator_EmptyEntry_Test() + { + #region Stubs + var entry = "test;test2;"; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(2, result.Length); + Assert.AreEqual("test", result[0]); + Assert.AreEqual("test2", result[1]); + #endregion + } + + [TestMethod] + public void Parse_SemicolonSeparator_WhiteSpace_Test() + { + #region Stubs + var entry = "test; test2"; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(2, result.Length); + Assert.AreEqual("test", result[0]); + Assert.AreEqual("test2", result[1]); + #endregion + } + + [TestMethod] + public void Parse_SemicolonSeparator_EmptyEntry_WhiteSpace_Test() + { + #region Stubs + var entry = "test; test2; "; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(2, result.Length); + Assert.AreEqual("test", result[0]); + Assert.AreEqual("test2", result[1]); + #endregion + } + } +} \ No newline at end of file