diff --git a/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationRegexParserTests.cs b/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationRegexParserTests.cs index fce5d71..2d780cf 100644 --- a/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationRegexParserTests.cs +++ b/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationRegexParserTests.cs @@ -1,10 +1,78 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +using BirdsiteLive.Domain.Repository; +using BirdsiteLive.Domain.Tools; +using Microsoft.VisualStudio.TestTools.UnitTesting; namespace BirdsiteLive.Domain.Tests.Tools { [TestClass] public class ModerationRegexParserTests { - + [TestMethod] + public void Parse_TwitterAccount_Simple_Test() + { + #region Stubs + var pattern = "handle"; + #endregion + + var regex = ModerationRegexParser.Parse(ModerationEntityTypeEnum.TwitterAccount, pattern); + + #region Validations + Assert.IsTrue(regex.IsMatch(pattern)); + Assert.IsFalse(regex.IsMatch("handles")); + Assert.IsFalse(regex.IsMatch("andle")); + #endregion + } + + [TestMethod] + public void Parse_Follower_Handle_Test() + { + #region Stubs + var pattern = "@handle@domain.ext"; + #endregion + + var regex = ModerationRegexParser.Parse(ModerationEntityTypeEnum.Follower, pattern); + + #region Validations + Assert.IsTrue(regex.IsMatch(pattern)); + Assert.IsFalse(regex.IsMatch("@handle2@domain.ext")); + Assert.IsFalse(regex.IsMatch("@handle@seb.domain.ext")); + #endregion + } + + [TestMethod] + public void Parse_Follower_Domain_Test() + { + #region Stubs + var pattern = "domain.ext"; + #endregion + + var regex = ModerationRegexParser.Parse(ModerationEntityTypeEnum.Follower, pattern); + + #region Validations + Assert.IsTrue(regex.IsMatch("@handle@domain.ext")); + Assert.IsTrue(regex.IsMatch("@handle2@domain.ext")); + Assert.IsFalse(regex.IsMatch("@handle2@domain2.ext")); + Assert.IsFalse(regex.IsMatch("@handle@seb.domain.ext")); + #endregion + } + + [TestMethod] + public void Parse_Follower_SubDomains_Test() + { + #region Stubs + var pattern = "*.domain.ext"; + #endregion + + var regex = ModerationRegexParser.Parse(ModerationEntityTypeEnum.Follower, pattern); + + #region Validations + Assert.IsTrue(regex.IsMatch("@handle2@sub.domain.ext")); + Assert.IsTrue(regex.IsMatch("@han@sub3.domain.ext")); + Assert.IsFalse(regex.IsMatch("@handle@domain.ext")); + Assert.IsFalse(regex.IsMatch("@handle2@.domain.ext")); + Assert.IsFalse(regex.IsMatch("@handle2@domain2.ext")); + Assert.IsFalse(regex.IsMatch("@handle@seb.domain2.ext")); + #endregion + } } } \ No newline at end of file