diff --git a/backend/api.test/Controllers/EmergencyActionControllerTests.cs b/backend/api.test/Controllers/EmergencyActionControllerTests.cs index f4076980..9c813d0d 100644 --- a/backend/api.test/Controllers/EmergencyActionControllerTests.cs +++ b/backend/api.test/Controllers/EmergencyActionControllerTests.cs @@ -1,7 +1,7 @@ -using System; -using System.Net.Http; +using System.Net.Http; using System.Threading.Tasks; using Api.Test.Database; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Controllers @@ -9,18 +9,20 @@ namespace Api.Test.Controllers public class EmergencyActionControllerTests : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required HttpClient Client; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); Client = TestSetupHelpers.ConfigureHttpClient(factory); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); } diff --git a/backend/api.test/Controllers/InspectionAreaControllerTests.cs b/backend/api.test/Controllers/InspectionAreaControllerTests.cs index e982e2f0..507211e7 100644 --- a/backend/api.test/Controllers/InspectionAreaControllerTests.cs +++ b/backend/api.test/Controllers/InspectionAreaControllerTests.cs @@ -10,6 +10,7 @@ using Api.Services; using Api.Test.Database; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Controllers @@ -17,6 +18,7 @@ namespace Api.Test.Controllers public class InspectionAreaControllerTests : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required HttpClient Client; public required JsonSerializerOptions SerializerOptions; @@ -26,17 +28,18 @@ public class InspectionAreaControllerTests : IAsyncLifetime public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); Client = TestSetupHelpers.ConfigureHttpClient(factory); SerializerOptions = TestSetupHelpers.ConfigureJsonSerializerOptions(); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); InspectionAreaService = serviceProvider.GetRequiredService(); diff --git a/backend/api.test/Controllers/InstallationControllerTests.cs b/backend/api.test/Controllers/InstallationControllerTests.cs index 755666d2..4a7462b0 100644 --- a/backend/api.test/Controllers/InstallationControllerTests.cs +++ b/backend/api.test/Controllers/InstallationControllerTests.cs @@ -4,24 +4,26 @@ using System.Threading.Tasks; using Api.Controllers.Models; using Api.Services; -using Api.Test.Database; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Controllers { public class InstallationControllerTests : IAsyncLifetime { + public required PostgreSqlContainer Container; public required HttpClient Client; public required IInstallationService InstallationService; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); Client = TestSetupHelpers.ConfigureHttpClient(factory); diff --git a/backend/api.test/Controllers/MissionSchedulingControllerTests.cs b/backend/api.test/Controllers/MissionSchedulingControllerTests.cs index 2e7e8a88..572c37d2 100644 --- a/backend/api.test/Controllers/MissionSchedulingControllerTests.cs +++ b/backend/api.test/Controllers/MissionSchedulingControllerTests.cs @@ -11,6 +11,7 @@ using Api.Services; using Api.Test.Database; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Controllers @@ -18,6 +19,7 @@ namespace Api.Test.Controllers public class MissionSchedulingControllerTests : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required HttpClient Client; public required JsonSerializerOptions SerializerOptions; @@ -25,17 +27,18 @@ public class MissionSchedulingControllerTests : IAsyncLifetime public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); Client = TestSetupHelpers.ConfigureHttpClient(factory); SerializerOptions = TestSetupHelpers.ConfigureJsonSerializerOptions(); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); MissionDefinitionService = serviceProvider.GetRequiredService(); @@ -271,7 +274,7 @@ await missionRunThreeResponse.Content.ReadFromJsonAsync( Assert.Equal(missionRunOne!.MissionId, activeMissionRun.MissionId); Assert.Equal(missionRunTwo!.MissionId, activeMissionRun.MissionId); Assert.Equal(missionRunThree!.MissionId, activeMissionRun.MissionId); - Assert.True(nextMissionRun.Id == missionRunOne.Id); + Assert.True(nextMissionRun.Id == missionRunTwo.Id); } [Fact] @@ -285,9 +288,7 @@ public async Task CheckThatMissionDoesNotStartIfRobotIsNotInSameInstallationAsMi plant.PlantCode ); - var otherInstallation = await DatabaseUtilities.NewInstallation( - "otherInstallationCode" - ); + var otherInstallation = await DatabaseUtilities.NewInstallation("OtherCode"); var robot = await DatabaseUtilities.NewRobot(RobotStatus.Available, otherInstallation); var query = CreateDefaultCustomMissionQuery( diff --git a/backend/api.test/Controllers/PlantControllerTests.cs b/backend/api.test/Controllers/PlantControllerTests.cs index fed4e739..91824257 100644 --- a/backend/api.test/Controllers/PlantControllerTests.cs +++ b/backend/api.test/Controllers/PlantControllerTests.cs @@ -6,6 +6,7 @@ using Api.Services; using Api.Test.Database; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Controllers @@ -13,21 +14,23 @@ namespace Api.Test.Controllers public class PlantControllerTests : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required HttpClient Client; public required IPlantService PlantService; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); Client = TestSetupHelpers.ConfigureHttpClient(factory); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); PlantService = serviceProvider.GetRequiredService(); diff --git a/backend/api.test/Controllers/RobotControllerTests.cs b/backend/api.test/Controllers/RobotControllerTests.cs index e0726c30..46bbff73 100644 --- a/backend/api.test/Controllers/RobotControllerTests.cs +++ b/backend/api.test/Controllers/RobotControllerTests.cs @@ -9,6 +9,7 @@ using Api.Database.Models; using Api.Test.Database; using Microsoft.EntityFrameworkCore; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Controllers @@ -16,21 +17,22 @@ namespace Api.Test.Controllers public class RobotControllerTests : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required HttpClient Client; public required JsonSerializerOptions SerializerOptions; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); - + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); Client = TestSetupHelpers.ConfigureHttpClient(factory); SerializerOptions = TestSetupHelpers.ConfigureJsonSerializerOptions(); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); } @@ -89,7 +91,7 @@ public async Task CheckThatRobotIsNotCreatedWhenInspectionAreaIsNotInInstallatio // Arrange var installation = await DatabaseUtilities.NewInstallation(); - var wrongInstallation = await DatabaseUtilities.NewInstallation("wrongInstallation"); + var wrongInstallation = await DatabaseUtilities.NewInstallation("wrongCode"); var wrongPlant = await DatabaseUtilities.NewPlant(wrongInstallation.InstallationCode); var wrongInspectionArea = await DatabaseUtilities.NewInspectionArea( wrongInstallation.InstallationCode, diff --git a/backend/api.test/Controllers/RoleAccessTests.cs b/backend/api.test/Controllers/RoleAccessTests.cs index ed9c3d96..02dae77f 100644 --- a/backend/api.test/Controllers/RoleAccessTests.cs +++ b/backend/api.test/Controllers/RoleAccessTests.cs @@ -9,6 +9,7 @@ using Api.Test.Mocks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Controllers @@ -16,16 +17,18 @@ namespace Api.Test.Controllers public class RoleAccessTests : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required HttpClient Client; public required JsonSerializerOptions SerializerOptions; public required MockHttpContextAccessor HttpContextAccessor; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); Client = TestSetupHelpers.ConfigureHttpClient(factory); @@ -34,7 +37,7 @@ public async Task InitializeAsync() serviceProvider.GetService()!; DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); } @@ -44,7 +47,7 @@ public async Task InitializeAsync() public async Task CheckThatRequestingPlantsWithUnauthorizedUserFails() { // Arrange - var installation = await DatabaseUtilities.NewInstallation("TestInstallationCode"); + var installation = await DatabaseUtilities.NewInstallation(); var plant = await DatabaseUtilities.NewPlant(installation.InstallationCode); var accessRoleQuery = new CreateAccessRoleQuery diff --git a/backend/api.test/Database/DatabaseUtilities.cs b/backend/api.test/Database/DatabaseUtilities.cs index 4eae1bcf..cafb22b7 100644 --- a/backend/api.test/Database/DatabaseUtilities.cs +++ b/backend/api.test/Database/DatabaseUtilities.cs @@ -106,7 +106,7 @@ public async Task NewMissionRun( IsarMissionId = isarMissionId, MissionRunType = missionRunType, Status = missionStatus, - DesiredStartTime = DateTime.Now, + DesiredStartTime = DateTime.UtcNow, InspectionArea = inspectionArea, Tasks = [], InstallationCode = installationCode, diff --git a/backend/api.test/Services/MissionRunService.cs b/backend/api.test/Services/MissionRunService.cs index 2c96f281..2b326273 100644 --- a/backend/api.test/Services/MissionRunService.cs +++ b/backend/api.test/Services/MissionRunService.cs @@ -6,6 +6,7 @@ using Api.Services; using Api.Test.Database; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Services @@ -13,18 +14,20 @@ namespace Api.Test.Services public class MissionServiceTest : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required IMissionRunService MissionRunService; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); MissionRunService = serviceProvider.GetRequiredService(); } diff --git a/backend/api.test/Services/MissionSchedulingService.cs b/backend/api.test/Services/MissionSchedulingService.cs index 7800657b..ba3b5dba 100644 --- a/backend/api.test/Services/MissionSchedulingService.cs +++ b/backend/api.test/Services/MissionSchedulingService.cs @@ -1,11 +1,10 @@ -using System; -using System.Threading; using System.Threading.Tasks; using Api.Controllers.Models; using Api.Database.Models; using Api.Services; using Api.Test.Database; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Services @@ -13,21 +12,22 @@ namespace Api.Test.Services public class MissionSchedulingServiceTest : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required IMissionSchedulingService MissionSchedulingService; public required IMissionRunService MissionRunService; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = await TestSetupHelpers.ConfigureDatabase( - databaseName + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString ); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureFlotillaDbContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); MissionSchedulingService = serviceProvider.GetRequiredService(); diff --git a/backend/api.test/Services/RobotService.cs b/backend/api.test/Services/RobotService.cs index 2fa9aa20..446069fe 100644 --- a/backend/api.test/Services/RobotService.cs +++ b/backend/api.test/Services/RobotService.cs @@ -6,6 +6,7 @@ using Api.Services; using Api.Test.Database; using Microsoft.Extensions.DependencyInjection; +using Testcontainers.PostgreSql; using Xunit; namespace Api.Test.Services @@ -13,19 +14,21 @@ namespace Api.Test.Services public class RobotServiceTest : IAsyncLifetime { public required DatabaseUtilities DatabaseUtilities; + public required PostgreSqlContainer Container; public required IRobotService RobotService; public required IInstallationService InstallationService; public async Task InitializeAsync() { - string databaseName = Guid.NewGuid().ToString(); - (string connectionString, var connection) = - await TestSetupHelpers.ConfigureSqLiteDatabase(databaseName); - var factory = TestSetupHelpers.ConfigureWebApplicationFactory(databaseName); + (Container, string connectionString, var connection) = + await TestSetupHelpers.ConfigurePostgreSqlDatabase(); + var factory = TestSetupHelpers.ConfigureWebApplicationFactory( + postgreSqlConnectionString: connectionString + ); var serviceProvider = TestSetupHelpers.ConfigureServiceProvider(factory); DatabaseUtilities = new DatabaseUtilities( - TestSetupHelpers.ConfigureSqLiteContext(connectionString) + TestSetupHelpers.ConfigurePostgreSqlContext(connectionString) ); RobotService = serviceProvider.GetRequiredService();