NEO-38: reset player_position before progression persistence test

pull/72/head
VinPropane 2026-05-06 22:39:18 -04:00
parent ad9259c308
commit 310d2b637b
1 changed files with 33 additions and 8 deletions

View File

@ -1,4 +1,7 @@
using System.Net.Http.Json; using System.Net.Http.Json;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using NeonSprawl.Server.Game.PositionState;
using NeonSprawl.Server.Game.Skills; using NeonSprawl.Server.Game.Skills;
using NeonSprawl.Server.Tests.Game.PositionState; using NeonSprawl.Server.Tests.Game.PositionState;
using Npgsql; using Npgsql;
@ -48,7 +51,7 @@ public sealed class SkillProgressionGrantPersistenceIntegrationTests(PostgresInt
Assert.Equal(1, salvage.Level); Assert.Equal(1, salvage.Level);
} }
private static async Task ResetProgressionTableAsync() private async Task ResetProgressionTableAsync()
{ {
var cs = Environment.GetEnvironmentVariable("ConnectionStrings__NeonSprawl"); var cs = Environment.GetEnvironmentVariable("ConnectionStrings__NeonSprawl");
if (string.IsNullOrWhiteSpace(cs)) if (string.IsNullOrWhiteSpace(cs))
@ -56,23 +59,45 @@ public sealed class SkillProgressionGrantPersistenceIntegrationTests(PostgresInt
throw new InvalidOperationException("ConnectionStrings__NeonSprawl is not set."); throw new InvalidOperationException("ConnectionStrings__NeonSprawl is not set.");
} }
var ddlPath = Path.Combine(AppContext.BaseDirectory, "db", "migrations", "V003__player_skill_progression.sql"); _ = Factory.Services;
if (!File.Exists(ddlPath)) var options = Factory.Services.GetRequiredService<IOptions<GamePositionOptions>>().Value;
var positionDdlPath = Path.Combine(AppContext.BaseDirectory, "db", "migrations", "V001__player_position.sql");
var progressionDdlPath = Path.Combine(AppContext.BaseDirectory, "db", "migrations", "V003__player_skill_progression.sql");
if (!File.Exists(positionDdlPath))
{ {
throw new FileNotFoundException($"Test DDL not found at '{ddlPath}'.", ddlPath); throw new FileNotFoundException($"Test DDL not found at '{positionDdlPath}'.", positionDdlPath);
} }
var ddl = await File.ReadAllTextAsync(ddlPath); if (!File.Exists(progressionDdlPath))
{
throw new FileNotFoundException($"Test DDL not found at '{progressionDdlPath}'.", progressionDdlPath);
}
var positionDdl = await File.ReadAllTextAsync(positionDdlPath);
var progressionDdl = await File.ReadAllTextAsync(progressionDdlPath);
await using var conn = new NpgsqlConnection(cs); await using var conn = new NpgsqlConnection(cs);
await conn.OpenAsync(); await conn.OpenAsync();
await using (var apply = new NpgsqlCommand(ddl, conn)) await using (var applyPosition = new NpgsqlCommand(positionDdl, conn))
{ {
await apply.ExecuteNonQueryAsync(); await applyPosition.ExecuteNonQueryAsync();
} }
await using (var truncate = new NpgsqlCommand("TRUNCATE player_skill_progression;", conn)) await using (var truncate = new NpgsqlCommand("TRUNCATE player_position CASCADE;", conn))
{ {
await truncate.ExecuteNonQueryAsync(); await truncate.ExecuteNonQueryAsync();
} }
PostgresPositionBootstrap.SeedDevPlayer(conn, options);
await using (var applyProgression = new NpgsqlCommand(progressionDdl, conn))
{
await applyProgression.ExecuteNonQueryAsync();
}
await using (var truncateProgression = new NpgsqlCommand("TRUNCATE player_skill_progression;", conn))
{
await truncateProgression.ExecuteNonQueryAsync();
}
} }
} }