/
d3h5
/
Unistream.TestTask
Обзор
Документация
Войти
/
d3h5
/
Unistream.TestTask
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Unistream.TestTask.Tests/TransientContext/Common/DatabaseFixture.cs
71 строка
2 KB
WORKSTATION-H\mrthe
Первый залив
03 июн 2025, 11:20
03 июн 2025, 11:20
33c9164
Код
Авторство
О чём код?
using Grimtod.Articles.Tests.TransientContext.Postgresql; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Unistream.TestTask.DataAccessImpl.DataContexts; namespace Unistream.TestTask.Tests.TransientContext.Common; public class DatabaseFixture : IDisposable { public ApplicationDbContext DbContext { get; } public ITestDatabase? TestDatabase { get; } private bool _disposed = false; /// <summary> /// Конструктор вызывается только один раз перед запуском всех тестов. /// </summary> public DatabaseFixture() { var configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); TestDatabase = new TestDatabaseBuilder() .WithConfiguration(configuration) .Build(); TestDatabase.Create(); var builder = new DbContextOptionsBuilder<ApplicationDbContext>(); configuration["ConnectionStrings:Default"] = TestDatabase.ConnectionString; DbContext = new ApplicationDbContext(builder.Options, configuration); _ = DbContext.Database.EnsureCreated(); } public string TemplateDatabaseName { get; } = string.Empty; public string Connection { get; } = string.Empty; protected virtual void Dispose(bool disposing) { if (!_disposed) { if (disposing && TestDatabase is not null) { // Удаляем базу данных TestDatabase.Drop(); } _disposed = true; } } ~DatabaseFixture() { Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } } [CollectionDefinition("Database")] public class DatabaseCollectionFixture : ICollectionFixture<DatabaseFixture> { }