Commit 39caac85 authored by Steve Smith's avatar Steve Smith

parent 5f0182a0
......@@ -19,6 +19,7 @@
<ItemGroup>
<ProjectReference Include="..\CleanArchitecture.Core\CleanArchitecture.Core.csproj" />
<ProjectReference Include="..\CleanArchitecture.Infrastructure\CleanArchitecture.Infrastructure.csproj" />
</ItemGroup>
<ItemGroup>
......
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using CleanArchitecture.Core.Interfaces;
using System;
namespace CleanArchitecture.Web
{
......@@ -7,7 +11,26 @@ namespace CleanArchitecture.Web
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var loggerFactory = services.GetRequiredService<ILoggerFactory>();
try
{
var seedData = services.GetRequiredService<ISeedData>();
seedData.PopulateTestData();
}
catch (Exception ex)
{
var logger = loggerFactory.CreateLogger<Program>();
logger.LogError(ex, "An error occurred seeding the DB.");
}
}
host.Run();
}
public static IWebHost BuildWebHost(string[] args) =>
......
using System;
using CleanArchitecture.Core.Interfaces;
using CleanArchitecture.Core.SharedKernel;
using CleanArchitecture.Core.Interfaces;
using CleanArchitecture.Infrastructure.Data;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
......@@ -9,6 +7,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using StructureMap;
using System;
namespace CleanArchitecture.Web
{
......@@ -23,7 +22,6 @@ namespace CleanArchitecture.Web
public IServiceProvider ConfigureServices(IServiceCollection services)
{
// TODO: Add DbContext and IOC
string dbName = Guid.NewGuid().ToString();
services.AddDbContext<AppDbContext>(options =>
options.UseInMemoryDatabase(dbName));
......@@ -55,16 +53,6 @@ namespace CleanArchitecture.Web
return container.GetInstance<IServiceProvider>();
}
public void ConfigureTesting(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory,
ISeedData seedData)
{
this.Configure(app, env, loggerFactory);
SeedData.PopulateTestData(app.ApplicationServices.GetService<AppDbContext>());
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
......
using CleanArchitecture.Web;
using CleanArchitecture.Core.Interfaces;
using CleanArchitecture.Web;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.ApplicationParts;
using Microsoft.AspNetCore.Mvc.Controllers;
......@@ -29,13 +30,18 @@ namespace CleanArchitecture.Tests.Integration.Web
var builder = new WebHostBuilder()
.UseContentRoot(contentRoot)
.ConfigureServices(InitializeServices)
.UseStartup<Startup>()
.UseEnvironment("Testing"); // ensure ConfigureTesting is called in Startup
.UseStartup<Startup>();
var server = new TestServer(builder);
var client = server.CreateClient();
return client;
using (var scope = server.Host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var seedData = services.GetRequiredService<ISeedData>();
seedData.PopulateTestData();
}
return server.CreateClient();
}
protected virtual void InitializeServices(IServiceCollection services)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment