Skip to content

Commit 4dfd0c9

Browse files
committed
Merge branch 'develop'
2 parents e494d2d + 5b9b87a commit 4dfd0c9

9 files changed

+60
-7
lines changed

.config/dotnet-tools.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"rollForward": false
1111
},
1212
"dpi": {
13-
"version": "2025.1.20.90",
13+
"version": "2025.2.12.119",
1414
"commands": [
1515
"dpi"
1616
],

src/Devlead.Testing.MockHttp.Tests/Devlead.Testing.MockHttp.Tests.csproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@
3737
</ItemGroup>
3838

3939
<ItemGroup>
40-
<Compile Include="../Devlead.Testing.MockHttp/**/*.cs" Exclude="../Devlead.Testing.MockHttp/obj/**;../Devlead.Testing.MockHttp/bin/**" />
40+
<Compile Include="../Devlead.Testing.MockHttp/**/*.cs" Exclude="../Devlead.Testing.MockHttp/obj/**;../Devlead.Testing.MockHttp/bin/**">
41+
<Link>Devlead/%(RecursiveDir)%(Filename)%(Extension)</Link>
42+
</Compile>
4143
</ItemGroup>
4244

4345
</Project>

src/Devlead.Testing.MockHttp.Tests/Fixture/ServiceProviderFixture.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Devlead.Testing.MockHttp;
22
using Devlead.Testing.MockHttp.Tests;
3+
using Devlead.Testing.MockHttp.Tests.Model;
34
using Devlead.Testing.MockHttp.Tests.Services;
45
using Microsoft.Extensions.DependencyInjection;
56
public static partial class ServiceProviderFixture
@@ -8,5 +9,16 @@ static partial void InitServiceProvider(IServiceCollection services)
89
{
910
services.AddSingleton<MyService>()
1011
.AddMockHttpClient<Constants>();
12+
13+
services
14+
.AddOptions<MyServiceSettings>()
15+
.BindConfiguration(
16+
nameof(MyService)
17+
);
18+
}
19+
20+
static partial void ConfigureInMemory(IDictionary<string, string?> configData)
21+
{
22+
configData.Add($"{nameof(MyService)}:ServiceName", nameof(MyService));
1123
}
1224
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Devlead.Testing.MockHttp.Tests.Model
2+
{
3+
public record MyServiceSettings
4+
{
5+
public required string ServiceName { get; init; }
6+
}
7+
}

src/Devlead.Testing.MockHttp.Tests/Services/MyService.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
using Devlead.Testing.MockHttp.Tests.Model;
2+
using Microsoft.Extensions.Options;
23
using System.Net.Http.Json;
34

45
namespace Devlead.Testing.MockHttp.Tests.Services;
56

6-
public class MyService(HttpClient httpClient)
7+
public class MyService(HttpClient httpClient, IOptions<MyServiceSettings> settings)
78
{
9+
public string GetServiceName() => settings.Value.ServiceName;
10+
811
public async Task<string> GetData()
912
{
1013
var response = await httpClient.GetAsync("https://example.com/index.txt");
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
MyService

src/Devlead.Testing.MockHttp.Tests/Unit/MyServiceTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,18 @@ public async Task GetSecret()
4747
// When
4848
var result = await myService.GetSecret();
4949

50+
// Then
51+
await Verify(result);
52+
}
53+
[Test]
54+
public async Task GetServiceName()
55+
{
56+
// Given
57+
var myService = ServiceProviderFixture.GetRequiredService<MyService>();
58+
59+
// When
60+
var result = myService.GetServiceName();
61+
5062
// Then
5163
await Verify(result);
5264
}

src/Devlead.Testing.MockHttp/ServiceProviderFixture.cs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Microsoft.Extensions.DependencyInjection;
1+
using Microsoft.Extensions.Configuration;
2+
using Microsoft.Extensions.DependencyInjection;
23
using Microsoft.Extensions.Time.Testing;
34

45
public static partial class ServiceProviderFixture
@@ -62,8 +63,6 @@ public static (T1, T2, T3, T4, T5) GetRequiredService<T1, T2, T3, T4, T5>(
6263
);
6364
}
6465

65-
66-
6766
public static (T1, T2, T3, T4) GetRequiredService<T1, T2, T3, T4>(
6867
Func<IServiceCollection, IServiceCollection>? configure = null
6968
) where T1 : notnull
@@ -114,15 +113,32 @@ public static T GetRequiredService<T>(
114113

115114
public static ServiceProvider GetServiceProvider(Func<IServiceCollection, IServiceCollection>? configure)
116115
{
116+
var inMemoryConfigurationData = new Dictionary<string, string?>();
117+
ConfigureInMemory(inMemoryConfigurationData);
118+
119+
120+
var configurationBuilder = new ConfigurationBuilder()
121+
.AddInMemoryCollection(inMemoryConfigurationData);
122+
123+
Configure(configurationBuilder);
124+
125+
var configuration = configurationBuilder
126+
.Build();
127+
117128
var serviceCollection = new ServiceCollection();
118129

119130
serviceCollection
131+
.AddSingleton((IConfiguration)configuration)
120132
.AddSingleton<FakeTimeProvider>()
121133
.AddSingleton<TimeProvider>(provider => provider.GetRequiredService<FakeTimeProvider>());
122134

123135
InitServiceProvider(serviceCollection);
124136
return (configure?.Invoke(serviceCollection) ?? serviceCollection).BuildServiceProvider();
125137
}
126138

139+
static partial void ConfigureInMemory(IDictionary<string, string?> configData);
140+
141+
static partial void Configure(IConfigurationBuilder configuration);
142+
127143
static partial void InitServiceProvider(IServiceCollection services);
128144
}

src/Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@
2020
<PackageVersion Include="System.Linq.Async" Version="6.0.1" />
2121
<PackageVersion Include="System.Text.Json" Version="9.0.2" />
2222
<PackageVersion Include="Verify.Http" Version="6.4.1" />
23-
<PackageVersion Include="Verify.NUnit" Version="28.10.1" />
23+
<PackageVersion Include="Verify.NUnit" Version="28.11.0" />
2424
</ItemGroup>
2525
</Project>

0 commit comments

Comments
 (0)