Skip to content

Commit db476c7

Browse files
feat: add reusable fake time provider
1 parent c4ec48b commit db476c7

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

Chapter-3-microservice-extraction/Fitnet.Common/Fitnet.Common.IntegrationTestsToolbox/GlobalUsings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
global using Microsoft.AspNetCore.Mvc.Testing;
55
global using Microsoft.AspNetCore.Hosting;
66
global using Microsoft.Extensions.Configuration;
7+
global using Bogus;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace EvolutionaryArchitecture.Fitnet.Common.IntegrationTestsToolbox.TestEngine.Time;
2+
3+
[UsedImplicitly]
4+
public sealed class FakeTimeProvider(DateTimeOffset? now = null) : TimeProvider
5+
{
6+
private DateTimeOffset TimeNowOffset { get; set; } = now ?? new Faker().Date.RecentOffset().UtcDateTime;
7+
8+
public override DateTimeOffset GetUtcNow() => TimeNowOffset;
9+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace EvolutionaryArchitecture.Fitnet.Common.IntegrationTestsToolbox.TestEngine.Time;
2+
3+
using Microsoft.AspNetCore.TestHost;
4+
using Microsoft.Extensions.DependencyInjection;
5+
6+
public static class TimeExtensions
7+
{
8+
public static WebApplicationFactory<T> WithTime<T>(
9+
this WebApplicationFactory<T> webApplicationFactory, FakeTimeProvider fakeTimeProvider)
10+
where T : class => webApplicationFactory
11+
.WithWebHostBuilder(builder =>
12+
builder.ConfigureTestServices(services => services.AddSingleton<TimeProvider>(fakeTimeProvider)));
13+
}

0 commit comments

Comments
 (0)