// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Squidex.Domain.Apps.Core.TestHelpers; using Squidex.Infrastructure.Migrations; using Squidex.Providers.Postgres; using Squidex.Providers.Postgres.App; using Testcontainers.PostgreSql; namespace Squidex.EntityFramework.Migrations; [Trait("Category", "TestContainer")] public class PostgresMigrationTests : IAsyncLifetime { private readonly PostgreSqlContainer postgreSql = new PostgreSqlBuilder("postgis/postgis") .Build(); public async ValueTask InitializeAsync() { await postgreSql.StartAsync(TestContext.Current.CancellationToken); } public async ValueTask DisposeAsync() { await postgreSql.DisposeAsync(); } [Fact] public async Task Should_migrate() { var services = new ServiceCollection() .AddDbContextFactory(b => { b.UseNpgsql(postgreSql.GetConnectionString(), options => { options.UseNetTopologySuite(); }); }) .AddSingleton() .AddSingleton(TestUtils.DefaultSerializer) .AddSingleton>() .BuildServiceProvider(); var databaseMigrator = services.GetRequiredService>(); var databaseFactory = services.GetRequiredService>(); await databaseMigrator.InitializeAsync(default); await using var dbContext = await databaseFactory.CreateDbContextAsync(); var migrations = await dbContext.Database.GetAppliedMigrationsAsync(); Assert.NotEmpty(migrations); } }