Skip to content

Commit 57027ef

Browse files
committed
Fixed bug where Sql was the only valid StorageProvider
1 parent 747abc7 commit 57027ef

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

LinkDotNet.Blog.IntegrationTests/SmokeTest.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,22 @@
66

77
namespace LinkDotNet.Blog.IntegrationTests
88
{
9-
public class SmokeTest
9+
public class SmokeTest : IClassFixture<WebApplicationFactory<Program>>
1010
{
11+
private readonly WebApplicationFactory<Program> factory;
12+
13+
public SmokeTest(WebApplicationFactory<Program> factory)
14+
{
15+
this.factory = factory.WithWebHostBuilder(builder =>
16+
{
17+
builder.UseSetting("PersistenceProvider", "InMemory");
18+
});
19+
}
20+
1121
[Fact]
1222
public async Task ShouldBootUpApplication()
1323
{
14-
var application = new WebApplicationFactory<Program>().WithWebHostBuilder(b => { });
15-
var client = application.CreateClient();
24+
var client = factory.CreateClient();
1625

1726
var result = await client.GetAsync("/");
1827

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using LinkDotNet.Blog.Domain;
22
using LinkDotNet.Blog.Infrastructure.Persistence;
3-
using LinkDotNet.Blog.Infrastructure.Persistence.Sql;
43
using Microsoft.Extensions.Caching.Memory;
54
using Microsoft.Extensions.Configuration;
65
using Microsoft.Extensions.DependencyInjection;
@@ -11,27 +10,38 @@ public static class StorageProviderExtensions
1110
{
1211
public static void AddStorageProvider(this IServiceCollection services, IConfiguration configuration)
1312
{
13+
services.AddMemoryCache();
14+
1415
var persistenceProvider = PersistenceProvider.Create(configuration["PersistenceProvider"]);
1516

1617
if (persistenceProvider == PersistenceProvider.InMemory)
1718
{
1819
services.UseInMemoryAsStorageProvider();
20+
services.RegisterCachedRepository<Infrastructure.Persistence.InMemory.Repository<BlogPost>>();
1921
}
2022
else if (persistenceProvider == PersistenceProvider.RavenDb)
2123
{
2224
services.UseRavenDbAsStorageProvider();
25+
services.RegisterCachedRepository<Infrastructure.Persistence.RavenDb.Repository<BlogPost>>();
2326
}
2427
else if (persistenceProvider == PersistenceProvider.SqliteServer)
2528
{
2629
services.UseSqliteAsStorageProvider();
30+
services.RegisterCachedRepository<Infrastructure.Persistence.Sql.Repository<BlogPost>>();
2731
}
2832
else if (persistenceProvider == PersistenceProvider.SqlServer)
2933
{
3034
services.UseSqlAsStorageProvider();
35+
services.RegisterCachedRepository<Infrastructure.Persistence.Sql.Repository<BlogPost>>();
3136
}
37+
}
3238

33-
services.AddMemoryCache();
34-
services.AddScoped<Repository<BlogPost>>();
35-
services.AddScoped<IRepository<BlogPost>>(provider => new CachedRepository<BlogPost>(provider.GetRequiredService<Repository<BlogPost>>(), provider.GetRequiredService<IMemoryCache>()));
39+
private static void RegisterCachedRepository<TRepo>(this IServiceCollection services)
40+
where TRepo : class, IRepository<BlogPost>
41+
{
42+
services.AddScoped<TRepo>();
43+
services.AddScoped<IRepository<BlogPost>>(provider => new CachedRepository<BlogPost>(
44+
provider.GetRequiredService<TRepo>(),
45+
provider.GetRequiredService<IMemoryCache>()));
3646
}
3747
}

0 commit comments

Comments
 (0)