f916cfad6b
This commit restructures the EventOccurrenceParser by breaking down its functionality into modular components, including EventDefinitionResolver, LineClassifier, LocationPatternMatcher, SectionHeaderMatcher, TimeLocationParser, and TimeParser. This refactoring enhances code readability and maintainability, allowing for easier updates and testing. Additionally, the TextUtil class has been updated to include input sanitization methods. Comprehensive unit tests have been added to ensure the correctness of the new parsing logic and to validate the handling of various event occurrence scenarios.
108 lines
3.0 KiB
C#
108 lines
3.0 KiB
C#
using Core.Entities;
|
|
using Core.Parsers.EventOccurrence;
|
|
using NUnit.Framework;
|
|
|
|
namespace Tests.Parsers.EventOccurrence;
|
|
|
|
[TestFixture]
|
|
public class EventDefinitionResolver_Tests
|
|
{
|
|
[Test]
|
|
public void Resolve_SpecialEventPattern_MeetTheCandidates_ReturnsCorrectDefinition()
|
|
{
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Meet the Candidates Session 1", null);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.EqualTo(EventDefinition.MeetTheCandidates));
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_SpecialEventPattern_ChapterOfficerMeeting_ReturnsCorrectDefinition()
|
|
{
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Chapter Officer Meeting - MS", null);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.EqualTo(EventDefinition.ChapterOfficerMeeting));
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_SpecialEventPattern_VotingDelegateMeeting_ReturnsCorrectDefinition()
|
|
{
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Voting Delegate Meeting", null);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.EqualTo(EventDefinition.VotingDelegateMeeting));
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_SpecialEventPattern_CaseInsensitive_Works()
|
|
{
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("MEET THE CANDIDATES", null);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.EqualTo(EventDefinition.MeetTheCandidates));
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_GeneralSchedule_CurrentEventGeneralSchedule_ReturnsGeneralSchedule()
|
|
{
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Some Event Name", EventDefinition.GeneralSchedule);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.EqualTo(EventDefinition.GeneralSchedule));
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_CurrentEventDefinition_ReturnsCurrentEvent()
|
|
{
|
|
// Arrange
|
|
var currentEvent = new EventDefinition { Name = "Test Event" };
|
|
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Some Occurrence", currentEvent);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.EqualTo(currentEvent));
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_SpecialEventPattern_TakesPrecedenceOverCurrentEvent()
|
|
{
|
|
// Arrange
|
|
var currentEvent = new EventDefinition { Name = "Test Event" };
|
|
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Meet the Candidates Session 1", currentEvent);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.EqualTo(EventDefinition.MeetTheCandidates));
|
|
Assert.That(result, Is.Not.EqualTo(currentEvent));
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_NoMatch_ReturnsNull()
|
|
{
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Unknown Event Name", null);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.Null);
|
|
}
|
|
|
|
[Test]
|
|
public void Resolve_NoMatch_CurrentEventNull_ReturnsNull()
|
|
{
|
|
// Act
|
|
var result = EventDefinitionResolver.Resolve("Unknown Event Name", null);
|
|
|
|
// Assert
|
|
Assert.That(result, Is.Null);
|
|
}
|
|
}
|
|
|