Remove LocationParsingConfiguration and LocationPatternMatcher classes, along with related tests and UI components. Update EventOccurrenceParserService to include location validation logic, enhancing warning reporting for long locations and potential date/time patterns. Adjust appsettings and UI to reflect the removal of location parsing settings.

This commit is contained in:
2026-01-09 09:10:22 -05:00
parent 2eae3f205c
commit ea1a4a04ad
9 changed files with 95 additions and 547 deletions
@@ -1,166 +0,0 @@
using Core.Parsers.EventOccurrence;
using NUnit.Framework;
namespace Tests.Parsers.EventOccurrence;
[TestFixture]
public class LocationPatternMatcher_Tests
{
[Test]
public void Match_ExactMatch_ReturnsLocation()
{
// Arrange
var patterns = new List<string> { "Room A", "Room B", "Hall C" };
// Act
var result = LocationPatternMatcher.Match("Room A", patterns);
// Assert
Assert.That(result, Is.EqualTo("Room A"));
}
[Test]
public void Match_ExactMatch_CaseInsensitive_ReturnsLocation()
{
// Arrange
var patterns = new List<string> { "Room A" };
// Act
var result = LocationPatternMatcher.Match("room a", patterns);
// Assert
Assert.That(result, Is.EqualTo("room a"));
}
[Test]
public void Match_WildcardPattern_Matches_ReturnsLocation()
{
// Arrange
var patterns = new List<string> { "Room *", "Hall *" };
// Act
var result = LocationPatternMatcher.Match("Room 101", patterns);
// Assert
Assert.That(result, Is.EqualTo("Room 101"));
}
[Test]
public void Match_WildcardPattern_MultipleMatches_ReturnsFirstMatch()
{
// Arrange
var patterns = new List<string> { "Room *", "Exhibit Hall *" };
// Act
var result = LocationPatternMatcher.Match("Room 202", patterns);
// Assert
Assert.That(result, Is.EqualTo("Room 202"));
}
[Test]
public void Match_WildcardPattern_ExhibitHall_Matches()
{
// Arrange
var patterns = new List<string> { "Exhibit Hall *" };
// Act
var result = LocationPatternMatcher.Match("Exhibit Hall C", patterns);
// Assert
Assert.That(result, Is.EqualTo("Exhibit Hall C"));
}
[Test]
public void Match_WildcardPattern_MtgRoom_Matches()
{
// Arrange
var patterns = new List<string> { "Mtg. Room *" };
// Act
var result = LocationPatternMatcher.Match("Mtg. Room 14", patterns);
// Assert
Assert.That(result, Is.EqualTo("Mtg. Room 14"));
}
[Test]
public void Match_NoMatch_ReturnsEmpty()
{
// Arrange
var patterns = new List<string> { "Room *", "Hall *" };
// Act
var result = LocationPatternMatcher.Match("Unknown Location", patterns);
// Assert
Assert.That(result, Is.Empty);
}
[Test]
public void Match_EmptyLocation_ReturnsEmpty()
{
// Arrange
var patterns = new List<string> { "Room *" };
// Act
var result = LocationPatternMatcher.Match("", patterns);
// Assert
Assert.That(result, Is.Empty);
}
[Test]
public void Match_WhitespaceLocation_ReturnsEmpty()
{
// Arrange
var patterns = new List<string> { "Room *" };
// Act
var result = LocationPatternMatcher.Match(" ", patterns);
// Assert
Assert.That(result, Is.Empty);
}
[Test]
public void Match_EmptyPatterns_ReturnsEmpty()
{
// Arrange
var patterns = new List<string>();
// Act
var result = LocationPatternMatcher.Match("Room A", patterns);
// Assert
Assert.That(result, Is.Empty);
}
[Test]
public void Match_PatternWithSpecialCharacters_EscapesCorrectly()
{
// Arrange
var patterns = new List<string> { "Room (A)" };
// Act
var result = LocationPatternMatcher.Match("Room (A)", patterns);
// Assert
Assert.That(result, Is.EqualTo("Room (A)"));
}
[Test]
public void Match_LocationWithWhitespace_Trims_ReturnsLocation()
{
// Arrange
var patterns = new List<string> { "Room *" };
// Act
var result = LocationPatternMatcher.Match(" Room 101 ", patterns);
// Assert
// LocationPatternMatcher returns the matched location after normalization (trim)
Assert.That(result, Is.EqualTo("Room 101"));
}
}
@@ -1,5 +1,4 @@
using Core.Entities;
using Core.Models;
using Tests.Builders;
namespace Tests.Parsers;
@@ -27,17 +26,6 @@ public static class EventOccurrenceParserTestHelpers
return EventDefinitionBuilder.Individual(name).Build();
}
/// <summary>
/// Creates a LocationParsingConfiguration for testing.
/// </summary>
public static LocationParsingConfiguration CreateLocationConfig(params string[] patterns)
{
return new LocationParsingConfiguration
{
LocationPatterns = patterns.ToList()
};
}
/// <summary>
/// Cleans up a temporary file.
/// </summary>