Skip to content

Commit

Permalink
Use extension method for FakeTimeProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
eliykat committed Oct 18, 2024
1 parent c501254 commit 955579d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
10 changes: 0 additions & 10 deletions test/Common/AutoFixture/SutProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,16 +128,6 @@ public object Create(object request, ISpecimenContext context)
return _sutProvider.GetDependency(parameterInfo.ParameterType, "");
}

// TimeProvider should use FakeTimeProvider rather than a Substitute mock
if (parameterInfo.ParameterType == typeof(TimeProvider))
{
var fakeTimeProvider = new FakeTimeProvider();
_sutProvider.SetDependency(parameterInfo.ParameterType, fakeTimeProvider, parameterInfo.Name);
// Also register it under FakeTimeProvider so it can be easily retrieved in GetDependency
_sutProvider.SetDependency(typeof(FakeTimeProvider), fakeTimeProvider);
return fakeTimeProvider;
}

// This is the equivalent of _fixture.Create<parameterInfo.ParameterType>, but no overload for
// Create(Type type) exists.
var dependency = new SpecimenContext(_fixture).Resolve(new SeededRequest(parameterInfo.ParameterType,
Expand Down
15 changes: 15 additions & 0 deletions test/Common/AutoFixture/SutProviderExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using AutoFixture;
using Bit.Core.Services;
using Bit.Core.Settings;
using Microsoft.Extensions.Time.Testing;
using NSubstitute;
using RichardSzalay.MockHttp;

Expand Down Expand Up @@ -47,4 +48,18 @@ public static SutProvider<T> ConfigureBaseIdentityClientService<T>(this SutProvi
.SetDependency(mockHttpClientFactory)
.Create();
}

/// <summary>
/// Configures SutProvider to use FakeTimeProvider.
/// It is registered under both the TimeProvider type and the FakeTimeProvider type
/// so that it can be retrieved in a type-safe manner with GetDependency.
/// </summary>
public static SutProvider<T> ConfigureFakeTimeProvider<T>(this SutProvider<T> sutProvider)
{
var fakeTimeProvider = new FakeTimeProvider();
return sutProvider
.SetDependency((TimeProvider)fakeTimeProvider)
.SetDependency(fakeTimeProvider)
.Create();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -264,9 +264,8 @@ private static SutProvider<SavePolicyCommand> SutProviderFactory(IEnumerable<IPo
{
var fixture = new Fixture();
fixture.Customizations.Add(new PolicyValidatorSpecimenBuilder(policyValidators ?? new List<IPolicyValidator>()));
var sutProvider = new SutProvider<SavePolicyCommand>(fixture);
sutProvider.Create();
return sutProvider;
return new SutProvider<SavePolicyCommand>(fixture)
.ConfigureFakeTimeProvider();
}

private static void ArrangeOrganization(SutProvider<SavePolicyCommand> sutProvider, PolicyUpdate policyUpdate)
Expand Down

0 comments on commit 955579d

Please sign in to comment.