апи для работы с маршрутами согласования #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