using System.Linq; using System.Threading.Tasks; using Kyoo.Controllers; using Kyoo.Models; using Kyoo.Models.Exceptions; using Xunit; namespace Kyoo.Tests { public abstract class RepositoryTests where T : class, IResource { protected readonly RepositoryActivator Repositories; private readonly IRepository _repository; protected RepositoryTests(RepositoryActivator repositories) { Repositories = repositories; _repository = Repositories.LibraryManager.GetRepository(); } [Fact] public async Task FillTest() { await using DatabaseContext database = Repositories.Context.New(); Assert.Equal(1, database.Shows.Count()); } [Fact] public async Task GetByIdTest() { T value = await _repository.Get(TestSample.Get().ID); KAssert.DeepEqual(TestSample.Get(), value); } [Fact] public async Task GetBySlugTest() { T value = await _repository.Get(TestSample.Get().Slug); KAssert.DeepEqual(TestSample.Get(), value); } [Fact] public async Task GetByFakeIdTest() { await Assert.ThrowsAsync(() => _repository.Get(2)); } [Fact] public async Task GetByFakeSlugTest() { await Assert.ThrowsAsync(() => _repository.Get("non-existent")); } [Fact] public async Task DeleteByIdTest() { await _repository.Delete(TestSample.Get().ID); Assert.Equal(0, await _repository.GetCount()); } [Fact] public async Task DeleteBySlugTest() { await _repository.Delete(TestSample.Get().Slug); Assert.Equal(0, await _repository.GetCount()); } } }