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)); } }