Skip to content

Commit

Permalink
Use postgreSQL database for all tests
Browse files Browse the repository at this point in the history
  • Loading branch information
aeshub committed Jan 21, 2025
1 parent 53fc4fe commit b763168
Show file tree
Hide file tree
Showing 11 changed files with 83 additions and 61 deletions.
16 changes: 9 additions & 7 deletions backend/api.test/Controllers/EmergencyActionControllerTests.cs
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
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
{
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)
);
}

Expand Down
13 changes: 8 additions & 5 deletions backend/api.test/Controllers/InspectionAreaControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
using Api.Services;
using Api.Test.Database;
using Microsoft.Extensions.DependencyInjection;
using Testcontainers.PostgreSql;
using Xunit;

namespace Api.Test.Controllers
{
public class InspectionAreaControllerTests : IAsyncLifetime
{
public required DatabaseUtilities DatabaseUtilities;
public required PostgreSqlContainer Container;
public required HttpClient Client;
public required JsonSerializerOptions SerializerOptions;

Expand All @@ -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<IInspectionAreaService>();
Expand Down
12 changes: 7 additions & 5 deletions backend/api.test/Controllers/InstallationControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
17 changes: 9 additions & 8 deletions backend/api.test/Controllers/MissionSchedulingControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,34 @@
using Api.Services;
using Api.Test.Database;
using Microsoft.Extensions.DependencyInjection;
using Testcontainers.PostgreSql;
using Xunit;

namespace Api.Test.Controllers
{
public class MissionSchedulingControllerTests : IAsyncLifetime
{
public required DatabaseUtilities DatabaseUtilities;
public required PostgreSqlContainer Container;
public required HttpClient Client;
public required JsonSerializerOptions SerializerOptions;

public required IMissionDefinitionService MissionDefinitionService;

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<IMissionDefinitionService>();
Expand Down Expand Up @@ -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(
Expand Down
13 changes: 8 additions & 5 deletions backend/api.test/Controllers/PlantControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,31 @@
using Api.Services;
using Api.Test.Database;
using Microsoft.Extensions.DependencyInjection;
using Testcontainers.PostgreSql;
using Xunit;

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<IPlantService>();
Expand Down
16 changes: 9 additions & 7 deletions backend/api.test/Controllers/RobotControllerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,30 @@
using Api.Database.Models;
using Api.Test.Database;
using Microsoft.EntityFrameworkCore;
using Testcontainers.PostgreSql;
using Xunit;

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)
);
}

Expand Down Expand Up @@ -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,
Expand Down
15 changes: 9 additions & 6 deletions backend/api.test/Controllers/RoleAccessTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,26 @@
using Api.Test.Mocks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Testcontainers.PostgreSql;
using Xunit;

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);
Expand All @@ -34,7 +37,7 @@ public async Task InitializeAsync()
serviceProvider.GetService<IHttpContextAccessor>()!;

DatabaseUtilities = new DatabaseUtilities(
TestSetupHelpers.ConfigureSqLiteContext(connectionString)
TestSetupHelpers.ConfigurePostgreSqlContext(connectionString)
);
}

Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion backend/api.test/Database/DatabaseUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public async Task<MissionRun> NewMissionRun(
IsarMissionId = isarMissionId,
MissionRunType = missionRunType,
Status = missionStatus,
DesiredStartTime = DateTime.Now,
DesiredStartTime = DateTime.UtcNow,
InspectionArea = inspectionArea,
Tasks = [],
InstallationCode = installationCode,
Expand Down
13 changes: 8 additions & 5 deletions backend/api.test/Services/MissionRunService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,28 @@
using Api.Services;
using Api.Test.Database;
using Microsoft.Extensions.DependencyInjection;
using Testcontainers.PostgreSql;
using Xunit;

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<IMissionRunService>();
}
Expand Down
14 changes: 7 additions & 7 deletions backend/api.test/Services/MissionSchedulingService.cs
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
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
{
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<IMissionSchedulingService>();
Expand Down
Loading

0 comments on commit b763168

Please sign in to comment.