diff --git a/src/BuildingBlocks/TestBase/IntegrationTestBase.cs b/src/BuildingBlocks/TestBase/IntegrationTestBase.cs index 8ab33ce..5c61aba 100644 --- a/src/BuildingBlocks/TestBase/IntegrationTestBase.cs +++ b/src/BuildingBlocks/TestBase/IntegrationTestBase.cs @@ -2,7 +2,6 @@ using BuildingBlocks.Core.Event; using BuildingBlocks.Core.Model; using BuildingBlocks.EFCore; -using BuildingBlocks.EventStoreDB.Projections; using BuildingBlocks.MassTransit; using BuildingBlocks.Mongo; using BuildingBlocks.PersistMessageProcessor; @@ -51,7 +50,6 @@ public class IntegrationTestFixture : IAsyncLifetime { TestRegistrationServices?.Invoke(services); services.ReplaceSingleton(AddHttpContextAccessorMock); - services.Unregister(); services.AddMassTransitTestHarness(x => { x.UsingRabbitMq((context, cfg) => @@ -327,6 +325,17 @@ public class IntegrationTestFixtureCore : IAsyncLifetime private Checkpoint _checkpointPersistMessageDB; private MongoDbRunner _mongoRunner; + 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) { Fixture = integrationTestFixture; @@ -341,17 +350,21 @@ public class IntegrationTestFixtureCore : IAsyncLifetime _checkpointPersistMessageDB = new Checkpoint {TablesToIgnore = new[] {"__EFMigrationsHistory"}}; _mongoRunner = MongoDbRunner.Start(); - var mongoOptions = Fixture.ServiceProvider.GetRequiredService>(); - if (mongoOptions.Value.ConnectionString != null) - mongoOptions.Value.ConnectionString = _mongoRunner.ConnectionString; + + if (MongoConnectionString != null) + MongoConnectionString = _mongoRunner.ConnectionString; await SeedDataAsync(); } public async Task DisposeAsync() { - await _checkpointDefaultDB.Reset(Fixture.Configuration?.GetConnectionString("DefaultConnection")); - await _checkpointPersistMessageDB.Reset(Fixture.ServiceProvider.GetRequiredService>()?.Value?.ConnectionString); + if (!string.IsNullOrEmpty(DefaultConnectionString)) + await _checkpointDefaultDB.Reset(DefaultConnectionString); + + if (!string.IsNullOrEmpty(PersistConnectionString)) + await _checkpointPersistMessageDB.Reset(PersistConnectionString); + _mongoRunner.Dispose(); } diff --git a/src/Services/Booking/src/Booking.Api/appsettings.docker.json b/src/Services/Booking/src/Booking.Api/appsettings.docker.json index 96ed73d..e57caf6 100644 --- a/src/Services/Booking/src/Booking.Api/appsettings.docker.json +++ b/src/Services/Booking/src/Booking.Api/appsettings.docker.json @@ -6,9 +6,6 @@ "Microsoft.AspNetCore": "Warning" } }, - "ConnectionStrings": { - "DefaultConnection": "Server=db;Database=BookingDB;User ID=sa;Password=@Aa123456" - }, "RabbitMq": { "HostName": "rabbitmq", "ExchangeName": "booking", diff --git a/src/Services/Booking/src/Booking.Api/appsettings.test.json b/src/Services/Booking/src/Booking.Api/appsettings.test.json index 6b67e94..7e087dc 100644 --- a/src/Services/Booking/src/Booking.Api/appsettings.test.json +++ b/src/Services/Booking/src/Booking.Api/appsettings.test.json @@ -1,7 +1,4 @@ { - "ConnectionStrings": { - "DefaultConnection": "Server=.\\sqlexpress;Database=BookingDB_Test;Trusted_Connection=True;MultipleActiveResultSets=true" - }, "RabbitMq": { "HostName": "localhost", "ExchangeName": "booking", @@ -24,5 +21,8 @@ "MongoOptions": { "ConnectionString": "mongodb://localhost:27017", "DatabaseName": "booking-db-test" + }, + "EventStore": { + "ConnectionString": "esdb://localhost:2113?tls=false" } } diff --git a/src/Services/Booking/src/Booking/Booking/Features/CreateBooking/CreateBookingCommandHandler.cs b/src/Services/Booking/src/Booking/Booking/Features/CreateBooking/CreateBookingCommandHandler.cs index 0a595f7..cb449e0 100644 --- a/src/Services/Booking/src/Booking/Booking/Features/CreateBooking/CreateBookingCommandHandler.cs +++ b/src/Services/Booking/src/Booking/Booking/Features/CreateBooking/CreateBookingCommandHandler.cs @@ -3,6 +3,7 @@ using Booking.Booking.Events.Domain; using Booking.Booking.Exceptions; using Booking.Booking.Models.ValueObjects; using BuildingBlocks.Contracts.Grpc; +using BuildingBlocks.Core; using BuildingBlocks.Core.CQRS; using BuildingBlocks.EventStoreDB.Repository; using BuildingBlocks.Utils; @@ -14,17 +15,20 @@ public class CreateBookingCommandHandler : ICommandHandler _eventStoreDbRepository; private readonly IFlightGrpcService _flightGrpcService; private readonly ICurrentUserProvider _currentUserProvider; + private readonly IEventDispatcher _eventDispatcher; private readonly IPassengerGrpcService _passengerGrpcService; public CreateBookingCommandHandler(IEventStoreDBRepository eventStoreDbRepository, IPassengerGrpcService passengerGrpcService, IFlightGrpcService flightGrpcService, - ICurrentUserProvider currentUserProvider) + ICurrentUserProvider currentUserProvider, + IEventDispatcher eventDispatcher) { _eventStoreDbRepository = eventStoreDbRepository; _passengerGrpcService = passengerGrpcService; _flightGrpcService = flightGrpcService; _currentUserProvider = currentUserProvider; + _eventDispatcher = eventDispatcher; } public async Task Handle(CreateBookingCommand command, @@ -47,10 +51,12 @@ public class CreateBookingCommandHandler : ICommandHandler { + private readonly ITestHarness _testHarness; public CreateBookingTests( IntegrationTestFixture integrationTestFixture) : base( integrationTestFixture) { + _testHarness = Fixture.TestHarness; } protected override void RegisterTestsServices(IServiceCollection services) @@ -42,6 +47,8 @@ public class CreateBookingTests : IntegrationTestBase>()).Should().BeFalse(); + (await _testHarness.Published.Any()).Should().BeTrue(); }