47 lines
1.4 KiB
C#
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));
|
|
}
|
|
}
|