testing new Hashtag regex

This commit is contained in:
Nicolas Constant
2021-02-01 21:48:47 -05:00
parent 6fac0ceffa
commit c7bf5f79f8
3 changed files with 144 additions and 42 deletions

View File

@ -3,7 +3,9 @@ using System.Linq;
using BirdsiteLive.Common.Settings;
using BirdsiteLive.Domain.Tools;
using BirdsiteLive.Twitter.Models;
using Microsoft.Extensions.Logging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
namespace BirdsiteLive.Domain.Tests.Tools
{
@ -28,11 +30,16 @@ namespace BirdsiteLive.Domain.Tests.Tools
#region Stubs
var message = "Bla.\n\n@Mention blo. https://t.co/pgtrJi9600";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.IsTrue(result.content.Contains("Bla."));
Assert.IsTrue(result.content.Contains("</p><p>"));
#endregion
@ -45,10 +52,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = "Bla.\n@Mention blo. https://t.co/pgtrJi9600";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.IsTrue(result.content.Contains("Bla."));
Assert.IsTrue(result.content.Contains("<br/>"));
#endregion
@ -61,10 +73,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"Bla!{Environment.NewLine}https://t.co/L8BpyHgg25";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(0, result.tags.Length);
Assert.IsTrue(result.content.Contains("Bla!"));
@ -79,10 +96,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"Bla!{Environment.NewLine}https://www.eff.org/deeplinks/2020/07/pact-act-not-solution-problem-harmful-online-content";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(0, result.tags.Length);
Assert.IsTrue(result.content.Contains("Bla!"));
@ -97,10 +119,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"Bla!{Environment.NewLine}https://www.eff.org/deeplinks/2020/07/pact";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(0, result.tags.Length);
Assert.IsTrue(result.content.Contains("Bla!"));
@ -115,10 +142,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"https://t.co/L8BpyHgg25 Bla!{Environment.NewLine}https://www.eff.org/deeplinks/2020/07/pact-act-not-solution-problem-harmful-online-content";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(0, result.tags.Length);
Assert.IsTrue(result.content.Contains("Bla!"));
@ -132,13 +164,18 @@ namespace BirdsiteLive.Domain.Tests.Tools
public void Extract_SingleHashTag_Test()
{
#region Stubs
var message = $"Bla!{Environment.NewLine}#mytag";
var message = $"Bla!{Environment.NewLine}#mytag";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.AreEqual("#mytag", result.tags.First().name);
Assert.AreEqual("Hashtag", result.tags.First().type);
@ -153,13 +190,18 @@ namespace BirdsiteLive.Domain.Tests.Tools
public void Extract_SingleHashTag_AtStart_Test()
{
#region Stubs
var message = $"#mytag Bla!";
var message = "#mytag Bla!";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.AreEqual("#mytag", result.tags.First().name);
Assert.AreEqual("Hashtag", result.tags.First().type);
@ -174,20 +216,25 @@ namespace BirdsiteLive.Domain.Tests.Tools
public void Extract_SingleHashTag_SpecialChar_Test()
{
#region Stubs
var message = $"Bla!{Environment.NewLine}#COVID19";
var message = $"Bla!{Environment.NewLine}#COVID_19";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.AreEqual("#COVID19", result.tags.First().name);
Assert.AreEqual("#COVID_19", result.tags.First().name);
Assert.AreEqual("Hashtag", result.tags.First().type);
Assert.AreEqual("https://domain.name/tags/COVID19", result.tags.First().href);
Assert.AreEqual("https://domain.name/tags/COVID_19", result.tags.First().href);
Assert.IsTrue(result.content.Contains("Bla!"));
Assert.IsTrue(result.content.Contains(@"<a href=""https://domain.name/tags/COVID19"" class=""mention hashtag"" rel=""tag"">#<span>COVID19</span></a>"));
Assert.IsTrue(result.content.Contains(@"<a href=""https://domain.name/tags/COVID_19"" class=""mention hashtag"" rel=""tag"">#<span>COVID_19</span></a>"));
#endregion
}
@ -195,13 +242,18 @@ namespace BirdsiteLive.Domain.Tests.Tools
public void Extract_MultiHashTags_Test()
{
#region Stubs
var message = $"Bla!{Environment.NewLine}#mytag #mytag2 #mytag3{Environment.NewLine}Test #bal Test";
var message = $"Bla!{Environment.NewLine}#mytag #mytag2 #mytag3{Environment.NewLine}Test #bal Test";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(4, result.tags.Length);
Assert.IsTrue(result.content.Contains("Bla!"));
Assert.IsTrue(result.content.Contains(@"<a href=""https://domain.name/tags/mytag"" class=""mention hashtag"" rel=""tag"">#<span>mytag</span></a>"));
@ -218,10 +270,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"Bla!{Environment.NewLine}@mynickname";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.AreEqual("@mynickname@domain.name", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
@ -239,10 +296,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"Bla!{Environment.NewLine}@my___nickname";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.AreEqual("@my___nickname@domain.name", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
@ -260,10 +322,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"@mynickname Bla!";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.AreEqual("@mynickname@domain.name", result.tags.First().name);
Assert.AreEqual("Mention", result.tags.First().type);
@ -281,10 +348,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"Bla!{Environment.NewLine}@mynickname @mynickname2 @mynickname3{Environment.NewLine}Test @dada Test";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(4, result.tags.Length);
Assert.IsTrue(result.content.Contains("Bla!"));
Assert.IsTrue(result.content.Contains(@"<span class=""h-card""><a href=""https://domain.name/@mynickname"" class=""u-url mention"">@<span>mynickname</span></a></span>"));
@ -301,10 +373,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
var message = $"Bla!{Environment.NewLine}@mynickname #mytag2 @mynickname3{Environment.NewLine}Test @dada #dada Test";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(5, result.tags.Length);
Assert.IsTrue(result.content.Contains("Bla!"));
Assert.IsTrue(result.content.Contains(@"<span class=""h-card""><a href=""https://domain.name/@mynickname"" class=""u-url mention"">@<span>mynickname</span></a></span>"));
@ -324,10 +401,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
//var message = $"tests@mynickname";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.IsTrue(result.content.Contains(
@"😤 <span class=""h-card""><a href=""https://domain.name/@mynickname"" class=""u-url mention"">@<span>mynickname</span></a></span>"));
@ -344,10 +426,15 @@ namespace BirdsiteLive.Domain.Tests.Tools
//var message = $"tests@mynickname";
#endregion
var service = new StatusExtractor(_settings);
#region Mocks
var logger = new Mock<ILogger<StatusExtractor>>();
#endregion
var service = new StatusExtractor(_settings, logger.Object);
var result = service.Extract(message);
#region Validations
logger.VerifyAll();
Assert.AreEqual(1, result.tags.Length);
Assert.IsTrue(result.content.Equals(@"bla ( <span class=""h-card""><a href=""https://domain.name/@mynickname"" class=""u-url mention"">@<span>mynickname</span></a></span> test)"));
#endregion