Skip to content

Commit

Permalink
Rfactoring to future move startupapitests to common directory.
Browse files Browse the repository at this point in the history
  • Loading branch information
israelsantiago committed Oct 10, 2020
1 parent 20de9d7 commit 8e749ce
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 42 deletions.
2 changes: 0 additions & 2 deletions src/PoC.TestesServicos.Tests/PoC.TestesServicos.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@

<ItemGroup>
<Folder Include="Common" />
<Folder Include="Common\Fixtures\Configurations" />
<Folder Include="Service" />
<Folder Include="Contract" />
<Folder Include="Integration" />
<Folder Include="Unit" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,21 @@
using Respawn;
using Xunit;

namespace PoC.TestesServicos.Tests
namespace PoC.TestesServicos.Tests.Service.Common
{
public abstract class ControllerTestsBase : IAsyncLifetime
{
private readonly Checkpoint _checkpoint;
private readonly string _connectionStringDB;
private readonly string _connectionStringSqlServer;
private readonly IServiceScope _scope;
//private readonly IntegrationContainersAppFactory _integrationContainersFixture;
protected HttpClient Client { get; }
protected UsersDataContext Context { get; }

public ControllerTestsBase(IntegrationTestFixture<StartupApiTests> integrationContainersFixture)
{
Client = integrationContainersFixture.Client;
_scope = integrationContainersFixture.Factory.Server.Host.Services.CreateScope();
//_integrationContainersFixture = integrationContainersFixture;
_connectionStringDB = integrationContainersFixture.ConnectionStringDb;
_connectionStringSqlServer = integrationContainersFixture.ConnectionStringSqlServer;
_checkpoint = new Checkpoint();
Context = _scope.ServiceProvider.GetRequiredService<UsersDataContext>();
}
Expand All @@ -32,7 +30,7 @@ public ControllerTestsBase(IntegrationTestFixture<StartupApiTests> integrationCo

public Task InitializeAsync()
{
return _checkpoint.Reset(_connectionStringDB);
return _checkpoint.Reset(_connectionStringSqlServer);
}

public Task DisposeAsync()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.Configuration;
using PoC.TestesServicos.API;

namespace PoC.TestesServicos.Tests.Fixtures
namespace PoC.TestesServicos.Tests.Service.Common
{
public class IntegrationContainersAppFactory<TStartup> : WebApplicationFactory<Startup> where TStartup : class
public class IntegrationContainersAppFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class
{
private readonly string _mockeserverurl;
private const string CEP_API_URL_SECTION = "CepApiOptions:Url";
Expand All @@ -32,6 +31,7 @@ public IntegrationContainersAppFactory(string connectionStringDb,

protected override void ConfigureWebHost(IWebHostBuilder builder)
{

builder.ConfigureTestServices(services =>
{
// Hook for possible changes to injected services
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using DotNet.Testcontainers.Services;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using PoC.TestesServicos.API;
using PoC.TestesServicos.Data;
using PoC.TestesServicos.Tests.Fixtures;
using PoC.TestesServicos.Tests.Fixtures.Configurations.Databases.mysql;
using RabbitMQ.Client;
using WireMock.Server;
using WireMock.Settings;
using Xunit;

namespace PoC.TestesServicos.Tests.Fixtures
namespace PoC.TestesServicos.Tests.Service.Common
{
[CollectionDefinition(nameof(IntegrationApiTestFixtureCollection))]
public class IntegrationApiTestFixtureCollection : ICollectionFixture<IntegrationTestFixture<StartupApiTests>>
Expand All @@ -24,7 +21,7 @@ public class IntegrationApiTestFixtureCollection : ICollectionFixture<Integratio
public class IntegrationTestFixture<TStartup> : IDisposable, IAsyncLifetime where TStartup : class
{
public MssqlContainerFixture MssqlContainerFixture { get; }
public string ConnectionStringDb { get; private set; }
public string ConnectionStringSqlServer { get; private set; }

public CouchbaseContainerFixture CouchbaseContainerFixture { get; }
public string HostCouchbase { get; private set; }
Expand Down Expand Up @@ -70,14 +67,7 @@ public async Task InitializeAsync()
AggregateException allExceptions = allTasks.Exception;
}

ConnectionStringDb = MssqlContainerFixture.Container.ConnectionString;

var clientOptions = new WebApplicationFactoryClientOptions()
{
HandleCookies = false,
AllowAutoRedirect = true,
MaxAutomaticRedirections = 7
};
ConnectionStringSqlServer = MssqlContainerFixture.Container.ConnectionString;

HostCouchbase = CouchbaseContainerFixture.Container.ConnectionString;
UserNameCouchBase = CouchbaseContainerFixture.Container.Username;
Expand All @@ -86,7 +76,14 @@ public async Task InitializeAsync()

MockeServerUrl = MockServer.Urls.Single();

Factory = new IntegrationContainersAppFactory<TStartup>(ConnectionStringDb, HostCouchbase, UserNameCouchBase, PasswordCouchbase, BucketName, MockeServerUrl);
Factory = new IntegrationContainersAppFactory<TStartup>(ConnectionStringSqlServer, HostCouchbase, UserNameCouchBase, PasswordCouchbase, BucketName, MockeServerUrl);

var clientOptions = new WebApplicationFactoryClientOptions()
{
HandleCookies = false,
AllowAutoRedirect = true,
MaxAutomaticRedirections = 7
};

Client = Factory.CreateClient(clientOptions);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
using PoC.TestesServicos.API;
using PoC.TestesServicos.Data.Models;
using PoC.TestesServicos.Tests.Fixtures;
using PoC.TestesServicos.Tests.Service.Common;
using Xunit;

[assembly: AssemblyTrait("Category", "SkipWhenLiveUnitTesting")]
namespace PoC.TestesServicos.Tests
namespace PoC.TestesServicos.Tests.Service
{
[Collection(nameof(IntegrationApiTestFixtureCollection))]
public class CustomerClientTests : ControllerTestsBase
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
using System.IO;
using System.Net;
using System.Threading.Tasks;
using PoC.TestesServicos.API;
using PoC.TestesServicos.Data.Models;
using PoC.TestesServicos.Tests.Extensions;
using PoC.TestesServicos.Tests.Fixtures;
using PoC.TestesServicos.Tests.Service.Common;
using Xunit;

namespace PoC.TestesServicos.Tests
namespace PoC.TestesServicos.Tests.Service
{
[Collection(nameof(IntegrationApiTestFixtureCollection))]
public class UsersControllerTests : ControllerTestsBase
Expand Down
3 changes: 1 addition & 2 deletions src/Poc.ServiceTest.API/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ public void ConfigureServices(IServiceCollection services)
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,
IHostApplicationLifetime hostApplicationLifetime)
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment()) app.UseDeveloperExceptionPage();

Expand Down
14 changes: 7 additions & 7 deletions src/Poc.ServiceTest.API/StartupApiTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,29 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using PoC.TestesServicos.API;
using PoC.TestesServicos.API.Configs;
using PoC.TestesServicos.Core.Interfaces;
using PoC.TestesServicos.Core.Services;
using PoC.TestesServicos.Data;
using PoC.TestesServicos.Data.Couchbase.Providers;
using PoC.TestesServicos.Data.Couchbase.Repositories;

namespace PoC.TestesServicos.API
namespace PoC.TestesServicos.Tests.Service.Common
{
public class StartupApiTests
public class StartupApiTests
{

public IConfiguration Configuration { get; }

public StartupApiTests(IConfiguration configuration)
public StartupApiTests(IConfiguration configuration)
{
Configuration = configuration;
}

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{

string sqlserverconnectionstring = Environment.GetEnvironmentVariable("SQL_SERVER_CONNECTION_STRING") ?? throw new ArgumentNullException(nameof(sqlserverconnectionstring),
"Variável de ambiente SQL_SERVER_CONNECTION_STRING inexistente.");

Expand All @@ -52,9 +52,9 @@ public void ConfigureServices(IServiceCollection services)
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,
IHostApplicationLifetime hostApplicationLifetime)
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{

if (env.IsDevelopment()) app.UseDeveloperExceptionPage();

app.UseRouting();
Expand Down

0 comments on commit 8e749ce

Please sign in to comment.