using Microsoft.Extensions.DependencyInjection; using OwnerNumberMigration.ValueParsing; namespace OwnerNumberMigrationTest.ValueParsing; public class ParsingStrategyFactoryTest { private readonly IParsingStrategyFactory _factory; private readonly SingleValueArrayStrategy _singleArray = new(); private readonly CommaStringArrayStrategy _comma = new(); private readonly SingleValueStrategy _single = new(); public ParsingStrategyFactoryTest() { var services = new ServiceCollection(); services.AddSingleton(_singleArray); services.AddSingleton(_comma); services.AddSingleton(_single); _factory = new ParsingStrategyFactory(services.BuildServiceProvider()); } [Test] public void CreateParsingStrategy_PersonNumber_ReturnsSingleArrayStrategy() { const string Attribute = "PersonNumber"; var strategy = _factory.CreateParsingStrategy(Attribute); Assert.AreSame(_singleArray, strategy); } [Test] public void CreateParsingStrategy_PersonNumbers_ReturnsCommaStrategy() { const string Attribute = "PersonNumbers"; var strategy = _factory.CreateParsingStrategy(Attribute); Assert.AreSame(_comma, strategy); } [Test] public void CreateParsingStrategy_OrganizationNumber_ReturnsSingleArrayStrategy() { const string Attribute = "OrganizationNumber"; var strategy = _factory.CreateParsingStrategy(Attribute); Assert.AreSame(_singleArray, strategy); } [Test] public void CreateParsingStrategy_OrganizationNumbers_ReturnsCommaStrategy() { const string Attribute = "OrganizationNumbers"; var strategy = _factory.CreateParsingStrategy(Attribute); Assert.AreSame(_comma, strategy); } [Test] public void CreateParsingStrategy_AccountNumber_ReturnsSingleValueStrategy() { const string Attribute = "AccountNumber"; var strategy = _factory.CreateParsingStrategy(Attribute); Assert.AreSame(_single, strategy); } [Test] public void CreateParsingStrategy_UnkownValue_ThrowsException() { var attribute = Guid.NewGuid().ToString(); Assert.Throws(() => _factory.CreateParsingStrategy(attribute)); } }