From 2b0f6837a8d4c42aba1be0dcee0d1b40dcd0d48b Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Mon, 27 Nov 2023 02:49:08 +0100 Subject: [PATCH] Fix tests --- .../Database/RepositoryActivator.cs | 16 +++++-- .../Kyoo.Tests/Database/RepositoryTests.cs | 44 ------------------- back/tests/Kyoo.Tests/Database/TestContext.cs | 15 +++++-- 3 files changed, 24 insertions(+), 51 deletions(-) diff --git a/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs b/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs index 292a22f5..ce722371 100644 --- a/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs +++ b/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs @@ -19,6 +19,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.Design; +using System.Data.Common; using System.Linq; using System.Threading.Tasks; using Kyoo.Abstractions.Controllers; @@ -37,7 +38,7 @@ namespace Kyoo.Tests.Database public TestContext Context { get; } public ILibraryManager LibraryManager { get; } - private readonly List _databases = new(); + private readonly List _databases = new(); private readonly IBaseRepository[] _repositories; @@ -54,7 +55,7 @@ namespace Kyoo.Tests.Database MovieRepository movies = new(_NewContext(), studio, people, thumbs.Object); ShowRepository show = new(_NewContext(), studio, people, thumbs.Object); SeasonRepository season = new(_NewContext(), thumbs.Object); - LibraryItemRepository libraryItem = new(_NewContext()); + LibraryItemRepository libraryItem = new(_NewConnection()); EpisodeRepository episode = new(_NewContext(), show, thumbs.Object); UserRepository user = new(_NewContext(), thumbs.Object); @@ -101,9 +102,16 @@ namespace Kyoo.Tests.Database return context; } + private DbConnection _NewConnection() + { + DbConnection context = Context.NewConnection(); + _databases.Add(context); + return context; + } + public void Dispose() { - foreach (DatabaseContext context in _databases) + foreach (IDisposable context in _databases) context.Dispose(); Context.Dispose(); GC.SuppressFinalize(this); @@ -111,7 +119,7 @@ namespace Kyoo.Tests.Database public async ValueTask DisposeAsync() { - foreach (DatabaseContext context in _databases) + foreach (IAsyncDisposable context in _databases) await context.DisposeAsync(); await Context.DisposeAsync(); } diff --git a/back/tests/Kyoo.Tests/Database/RepositoryTests.cs b/back/tests/Kyoo.Tests/Database/RepositoryTests.cs index 78592000..6a8800b0 100644 --- a/back/tests/Kyoo.Tests/Database/RepositoryTests.cs +++ b/back/tests/Kyoo.Tests/Database/RepositoryTests.cs @@ -17,7 +17,6 @@ // along with Kyoo. If not, see . using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Kyoo.Abstractions.Controllers; @@ -133,54 +132,11 @@ namespace Kyoo.Tests.Database // await Assert.ThrowsAsync(() => _repository.Edit(new T { Id = 56 })); // } - [Fact] - public async Task GetExpressionIDTest() - { - KAssert.DeepEqual(TestSample.Get(), await _repository.Get(x => x.Id == TestSample.Get().Id)); - } - - [Fact] - public async Task GetExpressionSlugTest() - { - KAssert.DeepEqual(TestSample.Get(), await _repository.Get(x => x.Slug == TestSample.Get().Slug)); - } - - [Fact] - public async Task GetExpressionNotFoundTest() - { - await Assert.ThrowsAsync(() => _repository.Get(x => x.Slug == "non-existing")); - } - [Fact] public async Task GetOrDefaultTest() { Assert.Null(await _repository.GetOrDefault(56)); Assert.Null(await _repository.GetOrDefault("non-existing")); - Assert.Null(await _repository.GetOrDefault(x => x.Slug == "non-existing")); - } - - [Fact] - public async Task GetCountWithFilterTest() - { - string slug = TestSample.Get().Slug[2..4]; - Assert.Equal(1, await _repository.GetCount(x => x.Slug.Contains(slug))); - } - - [Fact] - public async Task GetAllTest() - { - string slug = TestSample.Get().Slug[2..4]; - ICollection ret = await _repository.GetAll(x => x.Slug.Contains(slug)); - Assert.Single(ret); - KAssert.DeepEqual(TestSample.Get(), ret.First()); - } - - [Fact] - public async Task DeleteAllTest() - { - string slug = TestSample.Get().Slug[2..4]; - await _repository.DeleteAll(x => x.Slug.Contains(slug)); - Assert.Equal(0, await _repository.GetCount()); } } } diff --git a/back/tests/Kyoo.Tests/Database/TestContext.cs b/back/tests/Kyoo.Tests/Database/TestContext.cs index 90004e92..91e1241a 100644 --- a/back/tests/Kyoo.Tests/Database/TestContext.cs +++ b/back/tests/Kyoo.Tests/Database/TestContext.cs @@ -17,6 +17,7 @@ // along with Kyoo. If not, see . using System; +using System.Data.Common; using System.Threading.Tasks; using Kyoo.Postgresql; using Microsoft.EntityFrameworkCore; @@ -68,22 +69,23 @@ namespace Kyoo.Tests public sealed class PostgresTestContext : TestContext { + private readonly string _database; private readonly DbContextOptions _context; public PostgresTestContext(PostgresFixture template, ITestOutputHelper output) { string id = Guid.NewGuid().ToString().Replace('-', '_'); - string database = $"kyoo_test_{id}"; + _database = $"kyoo_test_{id}"; using (NpgsqlConnection connection = new(template.Connection)) { connection.Open(); - using NpgsqlCommand cmd = new($"CREATE DATABASE {database} WITH TEMPLATE {template.Template}", connection); + using NpgsqlCommand cmd = new($"CREATE DATABASE {_database} WITH TEMPLATE {template.Template}", connection); cmd.ExecuteNonQuery(); } _context = new DbContextOptionsBuilder() - .UseNpgsql(GetConnectionString(database)) + .UseNpgsql(GetConnectionString(_database)) .UseLoggerFactory(LoggerFactory.Create(x => { x.ClearProviders(); @@ -119,6 +121,11 @@ namespace Kyoo.Tests { return new PostgresContext(_context); } + + public override DbConnection NewConnection() + { + return new NpgsqlConnection(GetConnectionString(_database)); + } } /// @@ -154,6 +161,8 @@ namespace Kyoo.Tests /// A valid DatabaseContext public abstract DatabaseContext New(); + public abstract DbConnection NewConnection(); + public abstract void Dispose(); public abstract ValueTask DisposeAsync();