апи для работы с маршрутами согласования #2
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user