Files

47 lines
1.4 KiB
C#

using TarninaHub.Application.Mappings;
using TarninaHub.Application.Text;
using TarninaHub.Domain.Enums;
namespace TarninaHub.Tests.Application;
public class KeywordExtractorTests
{
[Fact]
public void Extract_RemovesStopWordsAndShortTokens()
{
var keywords = KeywordExtractor.Extract("To jest problem dla seniorów i seniorów w gminie");
Assert.Contains("seniorów", keywords);
Assert.Contains("problem", keywords);
Assert.DoesNotContain("jest", keywords);
Assert.DoesNotContain("dla", keywords);
Assert.DoesNotContain("i", keywords);
}
[Fact]
public void Extract_RespectsMaxAndOrdersByFrequency()
{
var keywords = KeywordExtractor.Extract("transport transport transport zdrowie zdrowie rodzina", max: 2);
Assert.Equal(2, keywords.Count);
Assert.Equal("transport", keywords[0]);
Assert.Equal("zdrowie", keywords[1]);
}
[Fact]
public void Extract_ReturnsEmptyForBlankText()
{
Assert.Empty(KeywordExtractor.Extract(" "));
}
[Theory]
[InlineData(SubmissionStatus.New, "new")]
[InlineData(SubmissionStatus.InProgress, "in_progress")]
[InlineData(SubmissionStatus.Rejected, "rejected")]
public void StatusWire_RoundTrips(SubmissionStatus status, string wire)
{
Assert.Equal(wire, status.ToWire());
Assert.Equal(status, SubmissionStatusWire.Parse(wire));
}
}