❔ Only a single database provider can be registered in a service provider
I decided to write unit test:
[TestFixture]
public class SecuritySettingsTest
{
private SegmentTestContextFactory_segmentTestContextFactory;
private SecurityLogic _securityLogic;
private readonly CultureInfo _culture = new( "en-US" );
[OneTimeSetUp]
public void Setup()
{
_segmentTestContextFactory = new();
_securityLogic = new( _segmentTestContextFactory );
}
[Test]
public void RoleTemplatesGet_AllIds_ReturnsAllTemplates()
{
var templates = new List<PermissionTemplate>
{
new PermissionTemplate { Id = "1", Title = "Template 1" },
new PermissionTemplate { Id = "2", Title = "Template 2" }
};
using ( var context = _segmentTestContextFactory.CreateDbContext() )
{
context.Set<PermissionTemplate>().AddRange( templates );
context.SaveChanges();
}
var ids = templates.Select( t => t.Id ).ToHashSet();
var currentOperator = new Mock<IUserPrincipal>().Object;
var result = _securityLogic.RoleTemplatesGet( ids, currentOperator );
Assert.IsNotNull( result );
Assert.AreEqual( templates.Count, result.Count );
for ( var i = 0; i < result.Count; i++ )
{
Assert.AreEqual( templates[ i ].Id, result[ i ].Id );
Assert.AreEqual( templates[ i ].Title, result[ i ].Title );
}
}
}
public class SegmentTestContextFactory : ISegmentDbContextFactory
{
public SegmentDbContext CreateDbContext()
{
var optionsBuilder = new DbContextOptionsBuilder<SegmentDbContext>();
optionsBuilder.UseInMemoryDatabase(databaseName: "TestDatabase");
return new SegmentDbContext( optionsBuilder.Options );
}
}[TestFixture]
public class SecuritySettingsTest
{
private SegmentTestContextFactory_segmentTestContextFactory;
private SecurityLogic _securityLogic;
private readonly CultureInfo _culture = new( "en-US" );
[OneTimeSetUp]
public void Setup()
{
_segmentTestContextFactory = new();
_securityLogic = new( _segmentTestContextFactory );
}
[Test]
public void RoleTemplatesGet_AllIds_ReturnsAllTemplates()
{
var templates = new List<PermissionTemplate>
{
new PermissionTemplate { Id = "1", Title = "Template 1" },
new PermissionTemplate { Id = "2", Title = "Template 2" }
};
using ( var context = _segmentTestContextFactory.CreateDbContext() )
{
context.Set<PermissionTemplate>().AddRange( templates );
context.SaveChanges();
}
var ids = templates.Select( t => t.Id ).ToHashSet();
var currentOperator = new Mock<IUserPrincipal>().Object;
var result = _securityLogic.RoleTemplatesGet( ids, currentOperator );
Assert.IsNotNull( result );
Assert.AreEqual( templates.Count, result.Count );
for ( var i = 0; i < result.Count; i++ )
{
Assert.AreEqual( templates[ i ].Id, result[ i ].Id );
Assert.AreEqual( templates[ i ].Title, result[ i ].Title );
}
}
}
public class SegmentTestContextFactory : ISegmentDbContextFactory
{
public SegmentDbContext CreateDbContext()
{
var optionsBuilder = new DbContextOptionsBuilder<SegmentDbContext>();
optionsBuilder.UseInMemoryDatabase(databaseName: "TestDatabase");
return new SegmentDbContext( optionsBuilder.Options );
}
}