апи для работы с маршрутами согласования #2

Merged
admin merged 38 commits from initial-api into main 2026-07-27 13:14:32 +00:00
Showing only changes of commit a0afac6e07 - Show all commits
@@ -0,0 +1,40 @@
using Microsoft.EntityFrameworkCore;
using Tnsu.ApprovalRoute.Domain.Entities;
using Tnsu.ApprovalRoute.Infrastructure.Persistence;
namespace Tnsu.ApprovalRoute.IntegrationTests;
public class RequestTypePostgresTests
{
private static string ConnectionString =>
Environment.GetEnvironmentVariable("TEST_POSTGRES_CONNECTION")
?? "Host=localhost;Port=5435;Database=tnsu_approval_route;Username=tnsu_approval_route;Password=tnsu_approval_route";
[Fact]
public async Task CanInsertAndReadBack_RealPostgres()
{
var options = new DbContextOptionsBuilder<ApprovalRouteDbContext>()
.UseNpgsql(ConnectionString)
.UseSnakeCaseNamingConvention()
.Options;
await using var db = new ApprovalRouteDbContext(options);
await db.Database.MigrateAsync();
// Транзакция без коммита — тест не оставляет данных в базе после себя.
await using var transaction = await db.Database.BeginTransactionAsync();
var entity = new RequestType { Name = "Integration test type", PageUrl = "/integration-test" };
db.RequestTypes.Add(entity);
await db.SaveChangesAsync();
db.ChangeTracker.Clear();
var loaded = await db.RequestTypes.AsNoTracking().FirstOrDefaultAsync(x => x.Id == entity.Id);
Assert.NotNull(loaded);
Assert.Equal("Integration test type", loaded.Name);
Assert.Equal("/integration-test", loaded.PageUrl);
await transaction.RollbackAsync();
}
}