diff --git a/Directory.Packages.props b/Directory.Packages.props index 34c67cd8..c33147f9 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -10,14 +10,14 @@ 8.4.3 - + - + @@ -31,10 +31,11 @@ - + + - + diff --git a/tests/CommunityToolkit.Datasync.Server.Automapper.Test/CommunityToolkit.Datasync.Server.Automapper.Test.csproj b/tests/CommunityToolkit.Datasync.Server.Automapper.Test/CommunityToolkit.Datasync.Server.Automapper.Test.csproj index f9d81cd2..823acacb 100644 --- a/tests/CommunityToolkit.Datasync.Server.Automapper.Test/CommunityToolkit.Datasync.Server.Automapper.Test.csproj +++ b/tests/CommunityToolkit.Datasync.Server.Automapper.Test/CommunityToolkit.Datasync.Server.Automapper.Test.csproj @@ -17,5 +17,6 @@ runtime; build; native; contentfiles; analyzers; buildtransitive all + diff --git a/tests/CommunityToolkit.Datasync.Server.Automapper.Test/MappedTableRepository_Tests.cs b/tests/CommunityToolkit.Datasync.Server.Automapper.Test/MappedTableRepository_Tests.cs index 1199fe2d..2aa456f5 100644 --- a/tests/CommunityToolkit.Datasync.Server.Automapper.Test/MappedTableRepository_Tests.cs +++ b/tests/CommunityToolkit.Datasync.Server.Automapper.Test/MappedTableRepository_Tests.cs @@ -8,20 +8,33 @@ using CommunityToolkit.Datasync.TestCommon; using CommunityToolkit.Datasync.TestCommon.Databases; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Xunit; using Xunit.Abstractions; namespace CommunityToolkit.Datasync.Server.Automapper.Test; [ExcludeFromCodeCoverage] -public class MappedTableRepository_Tests(ITestOutputHelper output) : RepositoryTests() +public class MappedTableRepository_Tests : RepositoryTests, IDisposable { #region Setup + private readonly ITestOutputHelper output; private readonly Random random = new(); private SqliteDbContext context; private EntityTableRepository innerRepository; - private readonly IMapper mapper = new MapperConfiguration(c => c.AddProfile(new MapperProfile())).CreateMapper(); + private readonly ILoggerFactory loggerFactory; + private readonly IMapper mapper; private MappedTableRepository repository; private List movies; + private bool _disposedValue; + + public MappedTableRepository_Tests(ITestOutputHelper output) + { + this.output = output; + this.loggerFactory = new LoggerFactory([ new XunitLoggerProvider(this.output) ]); + MapperConfiguration config = new(c => c.AddProfile(new MapperProfile()), this.loggerFactory); + this.mapper = config.CreateMapper(); + } protected override Task GetEntityAsync(string id) => Task.FromResult(this.mapper.Map(this.context.Movies.AsNoTracking().SingleOrDefault(m => m.Id == id))); @@ -31,7 +44,7 @@ protected override Task GetEntityCountAsync() protected override Task> GetPopulatedRepositoryAsync() { - this.context = SqliteDbContext.CreateContext(output); + this.context = SqliteDbContext.CreateContext(this.output); this.innerRepository = new EntityTableRepository(this.context); this.repository = new MappedTableRepository(this.mapper, this.innerRepository); this.movies = this.context.Movies.AsNoTracking().ToList().ConvertAll(m => this.mapper.Map(m)); @@ -40,5 +53,26 @@ protected override Task> GetPopulatedRepositoryAsync() protected override Task GetRandomEntityIdAsync(bool exists) => Task.FromResult(exists ? this.movies[this.random.Next(this.movies.Count)].Id : Guid.NewGuid().ToString()); + + protected virtual void Dispose(bool disposing) + { + if (!this._disposedValue) + { + if (disposing) + { + this.context.Dispose(); + this.loggerFactory.Dispose(); + } + + this._disposedValue = true; + } + } + + public void Dispose() + { + // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method + Dispose(disposing: true); + GC.SuppressFinalize(this); + } #endregion }