Files
monorepo/LCU.API.Internal.Document/OwnerNumberMigrationTest/ValueParsing/ParsingStrategyFactoryTest.cs
T
2026-03-13 09:11:35 -05:00

81 lines
2.3 KiB
C#

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<string[]>(Attribute);
Assert.AreSame(_singleArray, strategy);
}
[Test]
public void CreateParsingStrategy_PersonNumbers_ReturnsCommaStrategy()
{
const string Attribute = "PersonNumbers";
var strategy = _factory.CreateParsingStrategy<string[]>(Attribute);
Assert.AreSame(_comma, strategy);
}
[Test]
public void CreateParsingStrategy_OrganizationNumber_ReturnsSingleArrayStrategy()
{
const string Attribute = "OrganizationNumber";
var strategy = _factory.CreateParsingStrategy<string[]>(Attribute);
Assert.AreSame(_singleArray, strategy);
}
[Test]
public void CreateParsingStrategy_OrganizationNumbers_ReturnsCommaStrategy()
{
const string Attribute = "OrganizationNumbers";
var strategy = _factory.CreateParsingStrategy<string[]>(Attribute);
Assert.AreSame(_comma, strategy);
}
[Test]
public void CreateParsingStrategy_AccountNumber_ReturnsSingleValueStrategy()
{
const string Attribute = "AccountNumber";
var strategy = _factory.CreateParsingStrategy<string>(Attribute);
Assert.AreSame(_single, strategy);
}
[Test]
public void CreateParsingStrategy_UnkownValue_ThrowsException()
{
var attribute = Guid.NewGuid().ToString();
Assert.Throws<NotImplementedException>(() => _factory.CreateParsingStrategy<dynamic>(attribute));
}
}