mirror of
https://github.com/bitwarden/server.git
synced 2025-02-21 02:41:21 +01:00
PM-10600: Lazily created Sut class.
The SutProviderCustomization now includes create boolean flag, set to false, does not implicitly create the SutProvider instance. This gives flexibility to set dependencies and modify them, before the constructor of the Sut is called.
This commit is contained in:
parent
8b3f1318a2
commit
71603055ff
@ -2,7 +2,7 @@
|
||||
|
||||
namespace Bit.Test.Common.AutoFixture.Attributes;
|
||||
|
||||
public class SutProviderCustomizeAttribute : BitCustomizeAttribute
|
||||
public class SutProviderCustomizeAttribute(bool create = true) : BitCustomizeAttribute
|
||||
{
|
||||
public override ICustomization GetCustomization() => new SutProviderCustomization();
|
||||
public override ICustomization GetCustomization() => new SutProviderCustomization(create);
|
||||
}
|
||||
|
@ -85,13 +85,6 @@ public class SutProvider<TSut> : ISutProvider
|
||||
return this;
|
||||
}
|
||||
|
||||
public SutProvider<TSut> CreateSubstitude()
|
||||
{
|
||||
Create();
|
||||
var constructor = SutType.GetConstructor(_dependencies.Keys.ToArray());
|
||||
return this;
|
||||
}
|
||||
|
||||
private bool DependencyIsSet(Type dependencyType, string parameterName = "")
|
||||
=> _dependencies.ContainsKey(dependencyType) && _dependencies[dependencyType].ContainsKey(parameterName);
|
||||
|
||||
|
@ -3,7 +3,7 @@ using AutoFixture.Kernel;
|
||||
|
||||
namespace Bit.Test.Common.AutoFixture.Attributes;
|
||||
|
||||
public class SutProviderCustomization : ICustomization, ISpecimenBuilder
|
||||
public class SutProviderCustomization(bool create = true) : ICustomization, ISpecimenBuilder
|
||||
{
|
||||
private IFixture _fixture = null;
|
||||
|
||||
@ -13,16 +13,20 @@ public class SutProviderCustomization : ICustomization, ISpecimenBuilder
|
||||
{
|
||||
throw new ArgumentNullException(nameof(context));
|
||||
}
|
||||
|
||||
if (!(request is Type typeRequest))
|
||||
{
|
||||
return new NoSpecimen();
|
||||
}
|
||||
|
||||
if (!typeof(ISutProvider).IsAssignableFrom(typeRequest))
|
||||
{
|
||||
return new NoSpecimen();
|
||||
}
|
||||
|
||||
return ((ISutProvider)Activator.CreateInstance(typeRequest, _fixture)).Create();
|
||||
var sutProvider = (ISutProvider)Activator.CreateInstance(typeRequest, _fixture);
|
||||
|
||||
return create ? sutProvider?.Create() : sutProvider;
|
||||
}
|
||||
|
||||
public void Customize(IFixture fixture)
|
||||
|
Loading…
Reference in New Issue
Block a user