Fix tests

This commit is contained in:
Zoe Roux 2023-08-01 00:43:40 +09:00
parent 9bb896e84b
commit 3d30d65184
5 changed files with 51 additions and 26 deletions

View File

@ -150,7 +150,7 @@ namespace Kyoo.Core.Controllers
public override async Task<Episode> Create(Episode obj)
{
await base.Create(obj);
obj.ShowSlug = _database.Shows.First(x => x.ID == obj.ShowID).Slug;
obj.ShowSlug = obj.Show?.Slug ?? _database.Shows.First(x => x.ID == obj.ShowID).Slug;
_database.Entry(obj).State = EntityState.Added;
await _database.SaveChangesAsync(() =>
obj.SeasonNumber != null && obj.EpisodeNumber != null

View File

@ -31,6 +31,27 @@ namespace Kyoo.Postgresql.Migrations
/// <inheritdoc/>
protected override void Up(MigrationBuilder migrationBuilder)
{
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER show_slug_trigger ON shows;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION show_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP TRIGGER season_slug_trigger ON seasons;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION season_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER episode_slug_trigger ON episodes;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION episode_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER track_slug_trigger ON tracks;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION track_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER episode_track_slug_trigger ON episodes;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION episode_update_tracks_slug;");
migrationBuilder.AlterColumn<string>(
name: "slug",
table: "tracks",
@ -60,27 +81,6 @@ namespace Kyoo.Postgresql.Migrations
oldClrType: typeof(string),
oldType: "text",
oldNullable: true);
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER show_slug_trigger ON shows;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION show_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP TRIGGER season_slug_trigger ON seasons;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION season_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER episode_slug_trigger ON episodes;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION episode_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER track_slug_trigger ON tracks;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION track_slug_update;");
// language=PostgreSQL
migrationBuilder.Sql("DROP TRIGGER episode_track_slug_trigger ON episodes;");
// language=PostgreSQL
migrationBuilder.Sql(@"DROP FUNCTION episode_update_tracks_slug;");
}
/// <inheritdoc/>

View File

@ -108,7 +108,7 @@ namespace Kyoo.Tests.Database
}
[Fact]
public async Task CreateTest()
public virtual async Task CreateTest()
{
await Assert.ThrowsAsync<DuplicatedItemException>(() => _repository.Create(TestSample.Get<T>()));
await _repository.Delete(TestSample.Get<T>());
@ -132,7 +132,7 @@ namespace Kyoo.Tests.Database
}
[Fact]
public async Task CreateIfNotExistTest()
public virtual async Task CreateIfNotExistTest()
{
T expected = TestSample.Get<T>();
KAssert.DeepEqual(expected, await _repository.CreateIfNotExists(TestSample.Get<T>()));

View File

@ -21,6 +21,7 @@ using System.Linq;
using System.Threading.Tasks;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models;
using Kyoo.Abstractions.Models.Exceptions;
using Kyoo.Postgresql;
using Microsoft.EntityFrameworkCore;
using Xunit;
@ -45,6 +46,7 @@ namespace Kyoo.Tests.Database
protected AEpisodeTests(RepositoryActivator repositories)
: base(repositories)
{
_repository = repositories.LibraryManager.EpisodeRepository;
}
@ -332,5 +334,30 @@ namespace Kyoo.Tests.Database
value.Show = TestSample.Get<Show>();
KAssert.DeepEqual(value, ret.First());
}
[Fact]
public override async Task CreateTest()
{
await Assert.ThrowsAsync<DuplicatedItemException>(() => _repository.Create(TestSample.Get<Episode>()));
await _repository.Delete(TestSample.Get<Episode>());
Episode expected = TestSample.Get<Episode>();
expected.ID = 0;
expected.ShowID = (await Repositories.LibraryManager.ShowRepository.Create(TestSample.Get<Show>())).ID;
expected.SeasonID = (await Repositories.LibraryManager.SeasonRepository.Create(TestSample.Get<Season>())).ID;
await _repository.Create(expected);
KAssert.DeepEqual(expected, await _repository.Get(expected.Slug));
}
[Fact]
public override async Task CreateIfNotExistTest()
{
Episode expected = TestSample.Get<Episode>();
KAssert.DeepEqual(expected, await _repository.CreateIfNotExists(TestSample.Get<Episode>()));
await _repository.Delete(TestSample.Get<Episode>());
expected.ShowID = (await Repositories.LibraryManager.ShowRepository.Create(TestSample.Get<Show>())).ID;
expected.SeasonID = (await Repositories.LibraryManager.SeasonRepository.Create(TestSample.Get<Season>())).ID;
KAssert.DeepEqual(expected, await _repository.CreateIfNotExists(expected));
}
}
}

View File

@ -41,8 +41,6 @@ namespace Kyoo.Tests
public PostgresFixture()
{
// TODO Assert.Skip when postgres is not available. (this needs xunit v3)
string id = Guid.NewGuid().ToString().Replace('-', '_');
Template = $"kyoo_template_{id}";