elsa-core/test/shared/Elsa.Testing.Shared/AutoFixture/SpecimenBuilders/StubElsaContextSpecimenBuilder.cs
Craig Fowler 4873aac316 Resolve #748 - Test coverage for EF Db Contexts
As well as providing a unit test which matches other persistence
provider tests (round-tripping a workflow instance), two other tests
are included here:

* When using the default DI registration extension method, this sets
  up pooling of DB contexts and so a resolved context will come from
  the pool.

* When using the non-pooled DI registration extension method, this
  sets up EF without pooling, which is more useful in a multi-tenanted
  environment.

There are also some other changes in this commit corresponding to
improving the tests.  Mainly de-duplicating logic & improving names.
2021-03-13 15:21:44 +00:00

19 lines
683 B
C#

using System;
using AutoFixture.Kernel;
using Elsa.Persistence.EntityFramework.Core;
using Microsoft.EntityFrameworkCore;
namespace Elsa.Testing.Shared.AutoFixture.SpecimenBuilders
{
public class StubElsaContextSpecimenBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
=> request.IsAnAutofixtureRequestForType<ElsaContext>()? GetContext(context) : new NoSpecimen();
static object GetContext(ISpecimenContext context)
{
var options = (DbContextOptions<ElsaContext>) context.Resolve(typeof(DbContextOptions<ElsaContext>));
return new ElsaContext(options);
}
}
}