diff --git a/src/BuildingBlocks/TestBase/IntegrationTestBase.cs b/src/BuildingBlocks/TestBase/IntegrationTestBase.cs index 6423ae4..da5b153 100644 --- a/src/BuildingBlocks/TestBase/IntegrationTestBase.cs +++ b/src/BuildingBlocks/TestBase/IntegrationTestBase.cs @@ -6,6 +6,7 @@ using BuildingBlocks.MassTransit; using BuildingBlocks.Mongo; using BuildingBlocks.PersistMessageProcessor; using BuildingBlocks.Web; +using DotNet.Testcontainers.Containers; using Grpc.Net.Client; using MassTransit; using MassTransit.Testing; @@ -26,7 +27,7 @@ using Xunit.Abstractions; namespace BuildingBlocks.TestBase; -public class IntegrationTestFixture : IAsyncLifetime +public class IntegrationTestFactory : IAsyncLifetime where TEntryPoint : class { private readonly WebApplicationFactory _factory; @@ -39,8 +40,7 @@ public class IntegrationTestFixture : IAsyncLifetime public IServiceProvider ServiceProvider => _factory.Services; public IConfiguration Configuration => _factory.Services.GetRequiredService(); - - public IntegrationTestFixture() + public IntegrationTestFactory() { _factory = new WebApplicationFactory() .WithWebHostBuilder(builder => @@ -69,6 +69,7 @@ public class IntegrationTestFixture : IAsyncLifetime }); } + public Task InitializeAsync() { return Task.CompletedTask; @@ -195,7 +196,7 @@ public class IntegrationTestFixture : IAsyncLifetime } } -public class IntegrationTestFixture : IntegrationTestFixture +public class IntegrationTestFactory : IntegrationTestFactory where TEntryPoint : class where TWContext : DbContext { @@ -302,7 +303,7 @@ public class IntegrationTestFixture : IntegrationTestFix } } -public class IntegrationTestFixture : IntegrationTestFixture +public class IntegrationTestFactory : IntegrationTestFactory where TEntryPoint : class where TWContext : DbContext where TRContext : MongoDbContext @@ -325,28 +326,36 @@ public class IntegrationTestFixtureCore : IAsyncLifetime private Checkpoint _checkpointPersistMessageDB; private MongoDbRunner _mongoRunner; + private string DefaultConnectionString + { + get => Fixture.ServiceProvider.GetRequiredService>()?.Value.DefaultConnection; + set => Fixture.ServiceProvider.GetRequiredService>().Value.DefaultConnection = + value; + } + + private string PersistConnectionString + { + get => Fixture.ServiceProvider.GetRequiredService>()?.Value.ConnectionString; + set => Fixture.ServiceProvider.GetRequiredService>().Value.ConnectionString = + value; + } + private string MongoConnectionString { get => Fixture.ServiceProvider.GetRequiredService>()?.Value?.ConnectionString; set => Fixture.ServiceProvider.GetRequiredService>().Value.ConnectionString = value; } - private string PersistConnectionString => Fixture.ServiceProvider - .GetRequiredService>()?.Value.ConnectionString; - - private string DefaultConnectionString => Fixture.Configuration?.GetConnectionString("DefaultConnection"); - - public IntegrationTestFixtureCore(IntegrationTestFixture integrationTestFixture) + public IntegrationTestFixtureCore(IntegrationTestFactory integrationTestFixture) { Fixture = integrationTestFixture; integrationTestFixture.RegisterServices(services => RegisterTestsServices(services)); } - public IntegrationTestFixture Fixture { get; } + public IntegrationTestFactory Fixture { get; } public async Task InitializeAsync() { - //Todo: upgrade to new version Respawn _checkpointDefaultDB = new Checkpoint {TablesToIgnore = new[] {"__EFMigrationsHistory"}}; _checkpointPersistMessageDB = new Checkpoint {TablesToIgnore = new[] {"__EFMigrationsHistory"}}; @@ -355,6 +364,10 @@ public class IntegrationTestFixtureCore : IAsyncLifetime if (MongoConnectionString != null) MongoConnectionString = _mongoRunner.ConnectionString; + // DefaultConnectionString = TestContainers.SqlTestContainer?.ConnectionString; + // PersistConnectionString = TestContainers.SqlPersistTestContainer?.ConnectionString; + // MongoConnectionString = TestContainers.MongoTestContainer?.ConnectionString; + await SeedDataAsync(); } @@ -366,7 +379,8 @@ public class IntegrationTestFixtureCore : IAsyncLifetime if (!string.IsNullOrEmpty(PersistConnectionString)) await _checkpointPersistMessageDB.Reset(PersistConnectionString); - _mongoRunner.Dispose(); + if (!string.IsNullOrEmpty(PersistConnectionString)) + _mongoRunner.Dispose(); } protected virtual void RegisterTestsServices(IServiceCollection services) @@ -383,43 +397,43 @@ public class IntegrationTestFixtureCore : IAsyncLifetime } public abstract class IntegrationTestBase : IntegrationTestFixtureCore, - IClassFixture> + IClassFixture> where TEntryPoint : class { protected IntegrationTestBase( - IntegrationTestFixture integrationTestFixture) : base(integrationTestFixture) + IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { Fixture = integrationTestFixture; } - public new IntegrationTestFixture Fixture { get; } + public new IntegrationTestFactory Fixture { get; } } public abstract class IntegrationTestBase : IntegrationTestFixtureCore, - IClassFixture> + IClassFixture> where TEntryPoint : class where TWContext : DbContext { protected IntegrationTestBase( - IntegrationTestFixture integrationTestFixture) : base(integrationTestFixture) + IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { Fixture = integrationTestFixture; } - public new IntegrationTestFixture Fixture { get; } + public new IntegrationTestFactory Fixture { get; } } public abstract class IntegrationTestBase : IntegrationTestFixtureCore, - IClassFixture> + IClassFixture> where TEntryPoint : class where TWContext : DbContext where TRContext : MongoDbContext { protected IntegrationTestBase( - IntegrationTestFixture integrationTestFixture) : base(integrationTestFixture) + IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { Fixture = integrationTestFixture; } - public new IntegrationTestFixture Fixture { get; } + public new IntegrationTestFactory Fixture { get; } } diff --git a/src/BuildingBlocks/TestBase/TestContainer/IntegrationTestBase.cs b/src/BuildingBlocks/TestBase/TestContainer/IntegrationTestBase.cs deleted file mode 100644 index 1b9f7c2..0000000 --- a/src/BuildingBlocks/TestBase/TestContainer/IntegrationTestBase.cs +++ /dev/null @@ -1,484 +0,0 @@ -using Ardalis.GuardClauses; -using BuildingBlocks.Core.Event; -using BuildingBlocks.Core.Model; -using BuildingBlocks.EFCore; -using BuildingBlocks.MassTransit; -using BuildingBlocks.Mongo; -using BuildingBlocks.PersistMessageProcessor; -using BuildingBlocks.PersistMessageProcessor.Data; -using BuildingBlocks.Web; -using DotNet.Testcontainers.Builders; -using DotNet.Testcontainers.Configurations; -using DotNet.Testcontainers.Containers; -using Grpc.Net.Client; -using MassTransit; -using MassTransit.Testing; -using MediatR; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc.Testing; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Options; -using NSubstitute; -using Serilog; -using Xunit; -using Xunit.Abstractions; - -namespace BuildingBlocks.TestBase.TestContainer; - -public class IntegrationTestFactory : IAsyncLifetime - where TEntryPoint : class -{ - private readonly WebApplicationFactory _factory; - private int Timeout => 180; - public Action TestRegistrationServices { set; get; } - public HttpClient HttpClient => _factory.CreateClient(); - public ITestHarness TestHarness => CreateHarness(); - public GrpcChannel Channel => CreateChannel(); - - public IServiceProvider ServiceProvider => _factory.Services; - public IConfiguration Configuration => _factory.Services.GetRequiredService(); - public TestcontainerDatabase ContainerSqlDatabase; - public TestcontainerDatabase ContainerSqlPersistDatabase; - public TestcontainerDatabase ContainerMongoDatabase; - public string MongoConnectionString; - public string SqlConnectionString; - public string SqlPersistConnectionString; - - public IntegrationTestFactory() - { - ContainerSqlDatabase = new TestcontainersBuilder() - .WithDatabase(new MsSqlTestcontainerConfiguration {Database = "sql_test_db", Password = "localpassword#123uuuuu"}) - .WithImage("mcr.microsoft.com/mssql/server:2017-latest") - .WithCleanUp(true) - .Build(); - - ContainerSqlPersistDatabase = new TestcontainersBuilder() - .WithDatabase(new MsSqlTestcontainerConfiguration {Database = "sql_test_persist_db", Password = "localpassword#123oooo",}) - .WithImage("mcr.microsoft.com/mssql/server:2017-latest") - .WithCleanUp(true) - .Build(); - - ContainerMongoDatabase = new TestcontainersBuilder() - .WithDatabase(new MongoDbTestcontainerConfiguration() {Database = "mongo_test_db", Username = "mongo_db", Password = "mongo_db_pass"}) - .WithImage("mongo") - .WithCleanUp(true) - .Build(); - - _factory = new WebApplicationFactory() - .WithWebHostBuilder(builder => - { - builder.UseEnvironment("test"); - builder.ConfigureServices(services => - { - TestRegistrationServices?.Invoke(services); - services.ReplaceSingleton(AddHttpContextAccessorMock); - services.AddMassTransitTestHarness(x => - { - x.UsingRabbitMq((context, cfg) => - { - var rabbitMqOptions = services.GetOptions("RabbitMq"); - var host = rabbitMqOptions.HostName; - - cfg.Host(host, h => - { - h.Username(rabbitMqOptions.UserName); - h.Password(rabbitMqOptions.Password); - }); - cfg.ConfigureEndpoints(context); - }); - }); - }); - }); - } - - public async Task InitializeAsync() - { - await ContainerSqlDatabase.StartAsync(); - await ContainerSqlPersistDatabase.StartAsync(); - await ContainerMongoDatabase.StartAsync(); - - MongoConnectionString = ContainerMongoDatabase?.ConnectionString; - SqlConnectionString = ContainerSqlDatabase?.ConnectionString; - SqlPersistConnectionString = ContainerSqlPersistDatabase?.ConnectionString; - } - - public async Task DisposeAsync() - { - await ContainerSqlDatabase.StopAsync(); - await ContainerSqlPersistDatabase.StopAsync(); - await ContainerMongoDatabase.StopAsync(); - - await _factory.DisposeAsync(); - } - - public virtual void RegisterServices(Action services) - { - TestRegistrationServices = services; - } - - // ref: https://github.com/trbenning/serilog-sinks-xunit - public ILogger CreateLogger(ITestOutputHelper output) - { - if (output != null) - { - return new LoggerConfiguration() - .WriteTo.TestOutput(output) - .CreateLogger(); - } - - return null; - } - - public async Task ExecuteScopeAsync(Func action) - { - using var scope = ServiceProvider.CreateScope(); - await action(scope.ServiceProvider); - } - - public async Task ExecuteScopeAsync(Func> action) - { - using var scope = ServiceProvider.CreateScope(); - - var result = await action(scope.ServiceProvider); - - return result; - } - - public Task SendAsync(IRequest request) - { - return ExecuteScopeAsync(sp => - { - var mediator = sp.GetRequiredService(); - - return mediator.Send(request); - }); - } - - public Task SendAsync(IRequest request) - { - return ExecuteScopeAsync(sp => - { - var mediator = sp.GetRequiredService(); - - return mediator.Send(request); - }); - } - - // Ref: https://tech.energyhelpline.com/in-memory-testing-with-masstransit/ - public async ValueTask WaitUntilConditionMet(Func> conditionToMet, int? timeoutSecond = null) - { - var time = timeoutSecond ?? Timeout; - - var startTime = DateTime.Now; - var timeoutExpired = false; - var meet = await conditionToMet.Invoke(); - while (!meet) - { - if (timeoutExpired) throw new TimeoutException("Condition not met for the test."); - - await Task.Delay(100); - meet = await conditionToMet.Invoke(); - timeoutExpired = DateTime.Now - startTime > TimeSpan.FromSeconds(time); - } - } - - public async ValueTask ShouldProcessedPersistInternalCommand() - where TInternalCommand : class, IInternalCommand - { - await WaitUntilConditionMet(async () => - { - return await ExecuteScopeAsync(async sp => - { - var persistMessageProcessor = sp.GetService(); - Guard.Against.Null(persistMessageProcessor, nameof(persistMessageProcessor)); - - var filter = await persistMessageProcessor.GetByFilterAsync(x => - x.DeliveryType == MessageDeliveryType.Internal && - typeof(TInternalCommand).ToString() == x.DataType); - - var res = filter.Any(x => x.MessageStatus == MessageStatus.Processed); - - return res; - }); - }); - } - - private ITestHarness CreateHarness() - { - var harness = ServiceProvider.GetTestHarness(); - return harness; - } - - private GrpcChannel CreateChannel() - { - return GrpcChannel.ForAddress(HttpClient.BaseAddress!, new GrpcChannelOptions {HttpClient = HttpClient}); - } - - private IHttpContextAccessor AddHttpContextAccessorMock(IServiceProvider serviceProvider) - { - var httpContextAccessorMock = Substitute.For(); - using var scope = serviceProvider.CreateScope(); - httpContextAccessorMock.HttpContext = new DefaultHttpContext {RequestServices = scope.ServiceProvider}; - - httpContextAccessorMock.HttpContext.Request.Host = new HostString("localhost", 6012); - httpContextAccessorMock.HttpContext.Request.Scheme = "http"; - - return httpContextAccessorMock; - } -} - -public class IntegrationTestFactory : IntegrationTestFactory - where TEntryPoint : class - where TWContext : DbContext -{ - public Task ExecuteDbContextAsync(Func action) - { - return ExecuteScopeAsync(sp => action(sp.GetService())); - } - - public Task ExecuteDbContextAsync(Func action) - { - return ExecuteScopeAsync(sp => action(sp.GetService()).AsTask()); - } - - public Task ExecuteDbContextAsync(Func action) - { - return ExecuteScopeAsync(sp => action(sp.GetService(), sp.GetService())); - } - - public Task ExecuteDbContextAsync(Func> action) - { - return ExecuteScopeAsync(sp => action(sp.GetService())); - } - - public Task ExecuteDbContextAsync(Func> action) - { - return ExecuteScopeAsync(sp => action(sp.GetService()).AsTask()); - } - - public Task ExecuteDbContextAsync(Func> action) - { - return ExecuteScopeAsync(sp => action(sp.GetService(), sp.GetService())); - } - - public Task InsertAsync(params T[] entities) where T : class - { - return ExecuteDbContextAsync(db => - { - foreach (var entity in entities) db.Set().Add(entity); - - return db.SaveChangesAsync(); - }); - } - - public async Task InsertAsync(TEntity entity) where TEntity : class - { - await ExecuteDbContextAsync(db => - { - db.Set().Add(entity); - - return db.SaveChangesAsync(); - }); - } - - public Task InsertAsync(TEntity entity, TEntity2 entity2) - where TEntity : class - where TEntity2 : class - { - return ExecuteDbContextAsync(db => - { - db.Set().Add(entity); - db.Set().Add(entity2); - - return db.SaveChangesAsync(); - }); - } - - public Task InsertAsync(TEntity entity, TEntity2 entity2, TEntity3 entity3) - where TEntity : class - where TEntity2 : class - where TEntity3 : class - { - return ExecuteDbContextAsync(db => - { - db.Set().Add(entity); - db.Set().Add(entity2); - db.Set().Add(entity3); - - return db.SaveChangesAsync(); - }); - } - - public Task InsertAsync(TEntity entity, TEntity2 entity2, TEntity3 entity3, - TEntity4 entity4) - where TEntity : class - where TEntity2 : class - where TEntity3 : class - where TEntity4 : class - { - return ExecuteDbContextAsync(db => - { - db.Set().Add(entity); - db.Set().Add(entity2); - db.Set().Add(entity3); - db.Set().Add(entity4); - - return db.SaveChangesAsync(); - }); - } - - public Task FindAsync(long id) - where T : class, IAudit - { - return ExecuteDbContextAsync(db => db.Set().FindAsync(id).AsTask()); - } -} - -public class - IntegrationTestFactory : IntegrationTestFactory - where TEntryPoint : class - where TWContext : DbContext - where TRContext : MongoDbContext - where PContext : PersistMessageDbContext -{ - -} - -public class IntegrationTestFactory : IntegrationTestFactory< - TEntryPoint, - TWContext> - where TEntryPoint : class - where TWContext : DbContext - where TRContext : MongoDbContext -{ - public Task ExecuteReadContextAsync(Func action) - { - return ExecuteScopeAsync(sp => action(sp.GetRequiredService())); - } - - public Task ExecuteReadContextAsync(Func> action) - { - return ExecuteScopeAsync(sp => action(sp.GetRequiredService())); - } -} - -public class IntegrationTestFixtureCore : IAsyncLifetime - where TEntryPoint : class -{ - private string MongoConnectionString - { - get => Fixture.ServiceProvider.GetRequiredService>()?.Value?.ConnectionString; - set => Fixture.ServiceProvider.GetRequiredService>().Value.ConnectionString = value; - } - - private string PersistConnectionString - { - get => Fixture.ServiceProvider.GetRequiredService>()?.Value.ConnectionString; - set => Fixture.ServiceProvider.GetRequiredService>().Value.ConnectionString = value; - } - - private string DefaultConnectionString - { - get => Fixture.ServiceProvider.GetRequiredService>()?.Value.DefaultConnection; - set => Fixture.ServiceProvider.GetRequiredService>().Value.DefaultConnection = value; - } - - public IntegrationTestFixtureCore(IntegrationTestFactory integrationTestFixture) - { - Fixture = integrationTestFixture; - integrationTestFixture.RegisterServices(services => RegisterTestsServices(services)); - } - - public IntegrationTestFactory Fixture { get; } - - public async Task InitializeAsync() - { - - MongoConnectionString = Fixture.MongoConnectionString; - DefaultConnectionString = Fixture.SqlConnectionString; - PersistConnectionString = Fixture.SqlPersistConnectionString; - - await SeedDataAsync(); - } - - public async Task DisposeAsync() - { - await Task.CompletedTask; - } - - protected virtual void RegisterTestsServices(IServiceCollection services) - { - } - - private async Task SeedDataAsync() - { - using var scope = Fixture.ServiceProvider.CreateScope(); - - var seeders = scope.ServiceProvider.GetServices(); - foreach (var seeder in seeders) await seeder.SeedAllAsync(); - } -} - -public abstract class IntegrationTestBase : IntegrationTestFixtureCore, - IClassFixture> - where TEntryPoint : class -{ - protected IntegrationTestBase( - IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) - { - Fixture = integrationTestFixture; - } - - public new IntegrationTestFactory Fixture { get; } -} - -public abstract class IntegrationTestBase : IntegrationTestFixtureCore, - IClassFixture> - where TEntryPoint : class - where TWContext : DbContext -{ - protected IntegrationTestBase( - IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) - { - Fixture = integrationTestFixture; - } - - public new IntegrationTestFactory Fixture { get; } -} - -public abstract class IntegrationTestBase : IntegrationTestFixtureCore, - IClassFixture> - where TEntryPoint : class - where TWContext : DbContext - where TRContext : MongoDbContext -{ - protected IntegrationTestBase( - IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) - { - Fixture = integrationTestFixture; - } - - public new IntegrationTestFactory Fixture { get; } -} - -public abstract class IntegrationTestBase : - IntegrationTestFixtureCore, - IClassFixture> - where TEntryPoint : class - where TWContext : DbContext - where TRContext : MongoDbContext - where PContext : PersistMessageDbContext -{ - protected IntegrationTestBase( - IntegrationTestFactory integrationTestFixture) : base( - integrationTestFixture) - { - Fixture = integrationTestFixture; - } - - public new IntegrationTestFactory Fixture { get; } -} diff --git a/src/BuildingBlocks/TestBase/TestContainers.cs b/src/BuildingBlocks/TestBase/TestContainers.cs new file mode 100644 index 0000000..80be6f8 --- /dev/null +++ b/src/BuildingBlocks/TestBase/TestContainers.cs @@ -0,0 +1,33 @@ +using DotNet.Testcontainers.Builders; +using DotNet.Testcontainers.Configurations; +using DotNet.Testcontainers.Containers; + +namespace BuildingBlocks.TestBase; + +public static class TestContainers +{ + public static MsSqlTestcontainer SqlTestContainer => new TestcontainersBuilder() + .WithDatabase( + new MsSqlTestcontainerConfiguration {Database = "sql_test_db", Password = "localpassword#123uuuuu"}) + .WithImage("mcr.microsoft.com/mssql/server:2017-latest") + .WithCleanUp(true) + .Build(); + + public static MsSqlTestcontainer SqlPersistTestContainer => new TestcontainersBuilder() + .WithDatabase(new MsSqlTestcontainerConfiguration + { + Database = "sql_test_persist_db", Password = "localpassword#123oooo" + }) + .WithImage("mcr.microsoft.com/mssql/server:2017-latest") + .WithCleanUp(true) + .Build(); + + public static MongoDbTestcontainer MongoTestContainer => new TestcontainersBuilder() + .WithDatabase(new MongoDbTestcontainerConfiguration() + { + Database = "mongo_test_db", Username = "mongo_db", Password = "mongo_db_pass" + }) + .WithImage("mongo") + .WithCleanUp(true) + .Build(); +} diff --git a/src/Services/Booking/tests/IntegrationTest/Booking/Features/CreateBookingTests.cs b/src/Services/Booking/tests/IntegrationTest/Booking/Features/CreateBookingTests.cs index 3e4af47..fc86a28 100644 --- a/src/Services/Booking/tests/IntegrationTest/Booking/Features/CreateBookingTests.cs +++ b/src/Services/Booking/tests/IntegrationTest/Booking/Features/CreateBookingTests.cs @@ -27,7 +27,7 @@ public class CreateBookingTests : IntegrationTestBase integrationTestFixture) : base( + IntegrationTestFactory integrationTestFixture) : base( integrationTestFixture) { _testHarness = Fixture.TestHarness; diff --git a/src/Services/Flight/src/Flight/Extensions/Infrastructure/ProblemDetailsExtensions.cs b/src/Services/Flight/src/Flight/Extensions/Infrastructure/ProblemDetailsExtensions.cs index dab81e8..fa5ad9b 100644 --- a/src/Services/Flight/src/Flight/Extensions/Infrastructure/ProblemDetailsExtensions.cs +++ b/src/Services/Flight/src/Flight/Extensions/Infrastructure/ProblemDetailsExtensions.cs @@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -namespace Flight.Extensions; +namespace Flight.Extensions.Infrastructure; public static class ProblemDetailsExtensions { diff --git a/src/Services/Flight/src/Flight/Flights/Features/GetAvailableFlights/Endpoints/V1/GetAvailableFlightsEndpoint.cs b/src/Services/Flight/src/Flight/Flights/Features/GetAvailableFlights/Endpoints/V1/GetAvailableFlightsEndpoint.cs index e4effb6..3cbf21c 100644 --- a/src/Services/Flight/src/Flight/Flights/Features/GetAvailableFlights/Endpoints/V1/GetAvailableFlightsEndpoint.cs +++ b/src/Services/Flight/src/Flight/Flights/Features/GetAvailableFlights/Endpoints/V1/GetAvailableFlightsEndpoint.cs @@ -10,6 +10,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Swashbuckle.AspNetCore.Annotations; +namespace Flight.Flights.Features.GetAvailableFlights.Endpoints.V1; + public class GetAvailableFlightsEndpoint : IMinimalEndpoint { public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder endpoints) @@ -34,4 +36,4 @@ public class GetAvailableFlightsEndpoint : IMinimalEndpoint return Results.Ok(result); } -} +} \ No newline at end of file diff --git a/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/Endpoints/V1/GetFlightByIdEndpoint.cs b/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/Endpoints/V1/GetFlightByIdEndpoint.cs index 7469739..c494576 100644 --- a/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/Endpoints/V1/GetFlightByIdEndpoint.cs +++ b/src/Services/Flight/src/Flight/Flights/Features/GetFlightById/Endpoints/V1/GetFlightByIdEndpoint.cs @@ -24,7 +24,6 @@ // } // } -using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using BuildingBlocks.Web; @@ -36,6 +35,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Swashbuckle.AspNetCore.Annotations; +namespace Flight.Flights.Features.GetFlightById.Endpoints.V1; + public class GetFlightByIdEndpoint : IMinimalEndpoint { public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder endpoints) @@ -60,4 +61,4 @@ public class GetFlightByIdEndpoint : IMinimalEndpoint return Results.Ok(result); } -} +} \ No newline at end of file diff --git a/src/Services/Flight/src/Flight/Flights/Features/UpdateFlight/Endpoints/V1/UpdateFlightEndpoint.cs b/src/Services/Flight/src/Flight/Flights/Features/UpdateFlight/Endpoints/V1/UpdateFlightEndpoint.cs index c90a3c7..493ab76 100644 --- a/src/Services/Flight/src/Flight/Flights/Features/UpdateFlight/Endpoints/V1/UpdateFlightEndpoint.cs +++ b/src/Services/Flight/src/Flight/Flights/Features/UpdateFlight/Endpoints/V1/UpdateFlightEndpoint.cs @@ -9,6 +9,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Swashbuckle.AspNetCore.Annotations; +namespace Flight.Flights.Features.UpdateFlight.Endpoints.V1; + public class UpdateFlightEndpoint : IMinimalEndpoint { public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder endpoints) @@ -33,4 +35,4 @@ public class UpdateFlightEndpoint : IMinimalEndpoint return Results.Ok(result); } -} +} \ No newline at end of file diff --git a/src/Services/Flight/src/Flight/Seats/Features/CreateSeat/Endpoints/V1/CreateSeatEndpoint.cs b/src/Services/Flight/src/Flight/Seats/Features/CreateSeat/Endpoints/V1/CreateSeatEndpoint.cs index 2dec31a..aa72759 100644 --- a/src/Services/Flight/src/Flight/Seats/Features/CreateSeat/Endpoints/V1/CreateSeatEndpoint.cs +++ b/src/Services/Flight/src/Flight/Seats/Features/CreateSeat/Endpoints/V1/CreateSeatEndpoint.cs @@ -35,6 +35,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Swashbuckle.AspNetCore.Annotations; +namespace Flight.Seats.Features.CreateSeat.Endpoints.V1; + public class CreateSeatEndpoint : IMinimalEndpoint { public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder endpoints) @@ -59,4 +61,4 @@ public class CreateSeatEndpoint : IMinimalEndpoint return Results.Ok(result); } -} +} \ No newline at end of file diff --git a/src/Services/Flight/src/Flight/Seats/Features/GetAvailableSeats/Endpoints/V1/GetAvailableSeatsEndpoint.cs b/src/Services/Flight/src/Flight/Seats/Features/GetAvailableSeats/Endpoints/V1/GetAvailableSeatsEndpoint.cs index 170cb9f..a97b5df 100644 --- a/src/Services/Flight/src/Flight/Seats/Features/GetAvailableSeats/Endpoints/V1/GetAvailableSeatsEndpoint.cs +++ b/src/Services/Flight/src/Flight/Seats/Features/GetAvailableSeats/Endpoints/V1/GetAvailableSeatsEndpoint.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using BuildingBlocks.Web; -using Flight.Flights.Dtos; using Flight.Seats.Dtos; using Flight.Seats.Features.GetAvailableSeats.Queries.V1; using MediatR; @@ -11,6 +10,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Swashbuckle.AspNetCore.Annotations; +namespace Flight.Seats.Features.GetAvailableSeats.Endpoints.V1; + public class GetAvailableSeatsEndpoint : IMinimalEndpoint { public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder endpoints) @@ -35,4 +36,4 @@ public class GetAvailableSeatsEndpoint : IMinimalEndpoint return Results.Ok(result); } -} +} \ No newline at end of file diff --git a/src/Services/Flight/src/Flight/Seats/Features/ReserveSeat/Endpoints/V1/ReserveSeatEndpoint.cs b/src/Services/Flight/src/Flight/Seats/Features/ReserveSeat/Endpoints/V1/ReserveSeatEndpoint.cs index a81d693..7b4848b 100644 --- a/src/Services/Flight/src/Flight/Seats/Features/ReserveSeat/Endpoints/V1/ReserveSeatEndpoint.cs +++ b/src/Services/Flight/src/Flight/Seats/Features/ReserveSeat/Endpoints/V1/ReserveSeatEndpoint.cs @@ -9,6 +9,8 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Routing; using Swashbuckle.AspNetCore.Annotations; +namespace Flight.Seats.Features.ReserveSeat.Endpoints.V1; + public class ReserveSeatEndpoint : IMinimalEndpoint { public IEndpointRouteBuilder MapEndpoint(IEndpointRouteBuilder endpoints) @@ -33,4 +35,4 @@ public class ReserveSeatEndpoint : IMinimalEndpoint return Results.Ok(result); } -} +} \ No newline at end of file diff --git a/src/Services/Flight/tests/IntegrationTest/Aircraft/Features/CreateAircraftTests.cs b/src/Services/Flight/tests/IntegrationTest/Aircraft/Features/CreateAircraftTests.cs index 75f1c7c..75e2777 100644 --- a/src/Services/Flight/tests/IntegrationTest/Aircraft/Features/CreateAircraftTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Aircraft/Features/CreateAircraftTests.cs @@ -17,7 +17,7 @@ public class CreateAircraftTests : IntegrationTestBase integrationTestFixture) : base(integrationTestFixture) + public CreateAircraftTests(IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { _testHarness = Fixture.TestHarness; } diff --git a/src/Services/Flight/tests/IntegrationTest/Airport/Features/CreateAirportTests.cs b/src/Services/Flight/tests/IntegrationTest/Airport/Features/CreateAirportTests.cs index 260644d..a45134f 100644 --- a/src/Services/Flight/tests/IntegrationTest/Airport/Features/CreateAirportTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Airport/Features/CreateAirportTests.cs @@ -17,7 +17,7 @@ public class CreateAirportTests : IntegrationTestBase integrationTestFixture) : base( + IntegrationTestFactory integrationTestFixture) : base( integrationTestFixture) { _testHarness = Fixture.TestHarness; diff --git a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs index faeae0a..262853a 100644 --- a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs +++ b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs @@ -1,6 +1,6 @@ using AutoBogus; using BuildingBlocks.IdsGenerator; -using Flight.Seats.Features.CreateSeat; +using Flight.Seats.Enums; using Flight.Seats.Features.CreateSeat.Commands.V1; namespace Integration.Test.Fakes; @@ -11,5 +11,7 @@ public class FakeCreateSeatCommand : AutoFaker { RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); RuleFor(r => r.FlightId, _ => flightId); + RuleFor(r => r.Class, _ => SeatClass.Economy); + RuleFor(r => r.Type, _ => SeatType.Middle); } } diff --git a/src/Services/Flight/tests/IntegrationTest/Flight/Features/CreateFlightTests.cs b/src/Services/Flight/tests/IntegrationTest/Flight/Features/CreateFlightTests.cs index 36d0d2d..f01cfa5 100644 --- a/src/Services/Flight/tests/IntegrationTest/Flight/Features/CreateFlightTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Flight/Features/CreateFlightTests.cs @@ -17,7 +17,7 @@ public class CreateFlightTests : IntegrationTestBase integrationTestFixture) : base( + IntegrationTestFactory integrationTestFixture) : base( integrationTestFixture) { _testHarness = Fixture.TestHarness; diff --git a/src/Services/Flight/tests/IntegrationTest/Flight/Features/DeleteFlightTests.cs b/src/Services/Flight/tests/IntegrationTest/Flight/Features/DeleteFlightTests.cs index 1e3da0b..722c22b 100644 --- a/src/Services/Flight/tests/IntegrationTest/Flight/Features/DeleteFlightTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Flight/Features/DeleteFlightTests.cs @@ -20,7 +20,7 @@ public class DeleteFlightTests : IntegrationTestBase integrationTestFixture) : base( + IntegrationTestFactory integrationTestFixture) : base( integrationTestFixture) { _testHarness = Fixture.TestHarness; diff --git a/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetAvailableFlightsTests.cs b/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetAvailableFlightsTests.cs index 913e22a..fd8fe8c 100644 --- a/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetAvailableFlightsTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetAvailableFlightsTests.cs @@ -15,7 +15,7 @@ namespace Integration.Test.Flight.Features; public class GetAvailableFlightsTests : IntegrationTestBase { public GetAvailableFlightsTests( - IntegrationTestFixture integrationTestFixture) + IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { } diff --git a/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetFlightByIdTests.cs b/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetFlightByIdTests.cs index e4615be..2df3345 100644 --- a/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetFlightByIdTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Flight/Features/GetFlightByIdTests.cs @@ -19,7 +19,7 @@ public class GetFlightByIdTests : IntegrationTestBase integrationTestFixture) : base( + IntegrationTestFactory integrationTestFixture) : base( integrationTestFixture) { _channel = Fixture.Channel; diff --git a/src/Services/Flight/tests/IntegrationTest/Flight/Features/UpdateFlightTests.cs b/src/Services/Flight/tests/IntegrationTest/Flight/Features/UpdateFlightTests.cs index 5586a1f..616256f 100644 --- a/src/Services/Flight/tests/IntegrationTest/Flight/Features/UpdateFlightTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Flight/Features/UpdateFlightTests.cs @@ -15,7 +15,7 @@ public class UpdateFlightTests : IntegrationTestBase integrationTestFixture) : base(integrationTestFixture) + public UpdateFlightTests(IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { _testHarness = Fixture.TestHarness; } diff --git a/src/Services/Flight/tests/IntegrationTest/Seat/Features/GetAvailableSeatsTests.cs b/src/Services/Flight/tests/IntegrationTest/Seat/Features/GetAvailableSeatsTests.cs index 7276158..01c4805 100644 --- a/src/Services/Flight/tests/IntegrationTest/Seat/Features/GetAvailableSeatsTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Seat/Features/GetAvailableSeatsTests.cs @@ -16,7 +16,7 @@ public class GetAvailableSeatsTests : IntegrationTestBase integrationTestFixture) : base(integrationTestFixture) + public GetAvailableSeatsTests(IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { _channel = Fixture.Channel; } diff --git a/src/Services/Flight/tests/IntegrationTest/Seat/Features/ReserveSeatTests.cs b/src/Services/Flight/tests/IntegrationTest/Seat/Features/ReserveSeatTests.cs index be2da07..0a79ccf 100644 --- a/src/Services/Flight/tests/IntegrationTest/Seat/Features/ReserveSeatTests.cs +++ b/src/Services/Flight/tests/IntegrationTest/Seat/Features/ReserveSeatTests.cs @@ -17,7 +17,7 @@ public class ReserveSeatTests : IntegrationTestBase integrationTestFixture) : base( + IntegrationTestFactory integrationTestFixture) : base( integrationTestFixture) { _channel = Fixture.Channel; diff --git a/src/Services/Identity/tests/IntegrationTest/Identity/Features/RegisterNewUserTests.cs b/src/Services/Identity/tests/IntegrationTest/Identity/Features/RegisterNewUserTests.cs index 3a3e88b..387ac9e 100644 --- a/src/Services/Identity/tests/IntegrationTest/Identity/Features/RegisterNewUserTests.cs +++ b/src/Services/Identity/tests/IntegrationTest/Identity/Features/RegisterNewUserTests.cs @@ -16,7 +16,7 @@ public class RegisterNewUserTests : IntegrationTestBase integrationTestFixture) : base(integrationTestFixture) + public RegisterNewUserTests(IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { _testHarness = Fixture.TestHarness; } diff --git a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/MediatRExtensions.cs b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/MediatRExtensions.cs index 53d3f31..a3fc74b 100644 --- a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/MediatRExtensions.cs +++ b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/MediatRExtensions.cs @@ -4,7 +4,7 @@ using BuildingBlocks.Validation; using MediatR; using Microsoft.Extensions.DependencyInjection; -namespace Passenger.Extensions; +namespace Passenger.Extensions.Infrastructure; public static class MediatRExtensions { diff --git a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/ProblemDetailsExtensions.cs b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/ProblemDetailsExtensions.cs index 0ba16b6..b972bf0 100644 --- a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/ProblemDetailsExtensions.cs +++ b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/ProblemDetailsExtensions.cs @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -namespace Passenger.Extensions; +namespace Passenger.Extensions.Infrastructure; public static class ProblemDetailsExtensions { diff --git a/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/CompleteRegisterPassengerTests.cs b/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/CompleteRegisterPassengerTests.cs index a1f2205..a90ea4f 100644 --- a/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/CompleteRegisterPassengerTests.cs +++ b/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/CompleteRegisterPassengerTests.cs @@ -14,7 +14,7 @@ public class CompleteRegisterPassengerTests : IntegrationTestBase integrationTestFixture) : + public CompleteRegisterPassengerTests(IntegrationTestFactory integrationTestFixture) : base(integrationTestFixture) { _testHarness = Fixture.TestHarness; diff --git a/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/GetPassengerByIdTests.cs b/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/GetPassengerByIdTests.cs index 4ed3f51..bff32f5 100644 --- a/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/GetPassengerByIdTests.cs +++ b/src/Services/Passenger/tests/IntegrationTest/Passenger/Features/GetPassengerByIdTests.cs @@ -20,7 +20,7 @@ public class GetPassengerByIdTests : IntegrationTestBase integrationTestFixture) : base( + public GetPassengerByIdTests(IntegrationTestFactory integrationTestFixture) : base( integrationTestFixture) { _channel = Fixture.Channel;