1
0
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:
Maciej Zieniuk 2024-11-09 12:29:05 +00:00
parent 8b3f1318a2
commit 71603055ff
No known key found for this signature in database
GPG Key ID: 9CACE59F1272ACD9
3 changed files with 8 additions and 11 deletions

View File

@ -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);
}

View File

@ -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);

View File

@ -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)