* Trivial - Add VS Code workspace * Trivial - Add VSCode build task & extra ignore On GNU/Linux, auto-generated .directory files should be ignored. * WIP #485 - Boilerplate for unit test project * WIP #485 - Add test coverage (Remove/RemoveAll) * WIP #485 - Implement RemoveAll * Remove redundant logic, covered by IDictionary Per the following, the contract for a generic IDictionary, the Remove method already deals with non-existent keys. https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.idictionary-2.remove?view=net-5.0#System_Collections_Generic_IDictionary_2_Remove__0_ * Resolve #485 - Add PurgeVariables methods These are convenience methods upon ActivityExecutionContext and WorkflowExecutionContext, consistent with their current APIs. Also in this commit are tests for those simple methods. There's a bit of test-scaffold as well included, such as: * Autofixture Xunit2 integration * New project for unit tests * Customize attribute for avoiding crashes on Autofixture recursion * Reusable specimen builder for creating IServiceProvider which resolves services from Autofixture * Custonize attribute for a parameter to use that ^^ specimen builder
36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using AutoFixture.Kernel;
|
|
using Moq;
|
|
|
|
namespace Elsa.Testing.Shared.AutoFixture.SpecimenBuilders
|
|
{
|
|
/// <summary>
|
|
/// Creates a mock <see cref="IServiceProvider"/> which gets services
|
|
/// by resolving them from Autofixture.
|
|
/// </summary>
|
|
public class AutofixtureServiceProviderSpecimenBuilder : ISpecimenBuilder
|
|
{
|
|
public object Create(object request, ISpecimenContext context)
|
|
{
|
|
if(Equals(request, typeof(IServiceProvider)))
|
|
return GetServiceProvider(context);
|
|
if(request is ParameterInfo paramInfo && paramInfo.ParameterType == typeof(IServiceProvider))
|
|
return GetServiceProvider(context);
|
|
|
|
return new NoSpecimen();
|
|
}
|
|
|
|
static object GetServiceProvider(ISpecimenContext context)
|
|
{
|
|
var provider = new Mock<IServiceProvider>();
|
|
|
|
provider.Name = $"Autofixture_{nameof(IServiceProvider)}-{Guid.NewGuid()}";
|
|
provider
|
|
.Setup(x => x.GetService(It.IsAny<Type>()))
|
|
.Returns((Type t) => context.Resolve(t));
|
|
|
|
return provider.Object;
|
|
}
|
|
}
|
|
} |