From 27f2751bd0841142143919e4ca4225dafb63d793 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Tue, 29 Jun 2021 22:44:32 +0200 Subject: [PATCH] Adding movies episodes triggers --- .../Migrations/20210627141941_Triggers.cs | 2 ++ .../Migrations/20210626141347_Triggers.cs | 3 ++ .../Library/SpecificTests/EpisodeTest.cs | 22 ++++++++++++- .../Library/SpecificTests/LibraryItemTest.cs | 31 ++++++++++++++++++- Kyoo.Tests/Library/TestSample.cs | 15 +++++++++ 5 files changed, 71 insertions(+), 2 deletions(-) diff --git a/Kyoo.Postgresql/Migrations/20210627141941_Triggers.cs b/Kyoo.Postgresql/Migrations/20210627141941_Triggers.cs index 5e81e797..51763bb8 100644 --- a/Kyoo.Postgresql/Migrations/20210627141941_Triggers.cs +++ b/Kyoo.Postgresql/Migrations/20210627141941_Triggers.cs @@ -38,6 +38,7 @@ namespace Kyoo.Postgresql.Migrations NEW.slug := CONCAT( (SELECT slug FROM shows WHERE id = NEW.show_id), CASE + WHEN NEW.season_number IS NULL AND NEW.episode_number IS NULL THEN NULL WHEN NEW.season_number IS NULL THEN CONCAT('-', NEW.absolute_number) ELSE CONCAT('-s', NEW.season_number, 'e', NEW.episode_number) END @@ -62,6 +63,7 @@ namespace Kyoo.Postgresql.Migrations BEGIN UPDATE seasons SET slug = CONCAT(NEW.slug, '-s', season_number) WHERE show_id = NEW.id; UPDATE episodes SET slug = CASE + WHEN season_number IS NULL AND episode_number IS NULL THEN NEW.slug WHEN season_number IS NULL THEN CONCAT(NEW.slug, '-', absolute_number) ELSE CONCAT(NEW.slug, '-s', season_number, 'e', episode_number) END diff --git a/Kyoo.SqLite/Migrations/20210626141347_Triggers.cs b/Kyoo.SqLite/Migrations/20210626141347_Triggers.cs index 7d3c7c6a..6a70c8b1 100644 --- a/Kyoo.SqLite/Migrations/20210626141347_Triggers.cs +++ b/Kyoo.SqLite/Migrations/20210626141347_Triggers.cs @@ -28,6 +28,7 @@ namespace Kyoo.SqLite.Migrations UPDATE Episodes SET Slug = (SELECT Slug from Shows WHERE ID = ShowID) || CASE + WHEN SeasonNumber IS NULL AND AbsoluteNumber IS NULL THEN '' WHEN SeasonNumber IS NULL THEN '-' || AbsoluteNumber ELSE '-s' || SeasonNumber || 'e' || EpisodeNumber END @@ -41,6 +42,7 @@ namespace Kyoo.SqLite.Migrations UPDATE Episodes SET Slug = (SELECT Slug from Shows WHERE ID = ShowID) || CASE + WHEN SeasonNumber IS NULL AND AbsoluteNumber IS NULL THEN '' WHEN SeasonNumber IS NULL THEN '-' || AbsoluteNumber ELSE '-s' || SeasonNumber || 'e' || EpisodeNumber END @@ -56,6 +58,7 @@ namespace Kyoo.SqLite.Migrations UPDATE Episodes SET Slug = new.Slug || CASE + WHEN SeasonNumber IS NULL AND AbsoluteNumber IS NULL THEN '' WHEN SeasonNumber IS NULL THEN '-' || AbsoluteNumber ELSE '-s' || SeasonNumber || 'e' || EpisodeNumber END diff --git a/Kyoo.Tests/Library/SpecificTests/EpisodeTest.cs b/Kyoo.Tests/Library/SpecificTests/EpisodeTest.cs index 7a617fdb..6b1adf27 100644 --- a/Kyoo.Tests/Library/SpecificTests/EpisodeTest.cs +++ b/Kyoo.Tests/Library/SpecificTests/EpisodeTest.cs @@ -167,6 +167,26 @@ namespace Kyoo.Tests.Library Assert.Equal($"{TestSample.Get().Slug}-12", episode.Slug); } - // TODO add movies tests. + [Fact] + public async Task MovieEpisodeTest() + { + Episode episode = await _repository.Create(TestSample.GetMovieEpisode()); + Assert.Equal(TestSample.Get().Slug, episode.Slug); + episode = await _repository.Get(3); + Assert.Equal(TestSample.Get().Slug, episode.Slug); + } + + [Fact] + public async Task MovieEpisodeEditTest() + { + await _repository.Create(TestSample.GetMovieEpisode()); + await Repositories.LibraryManager.Edit(new Show + { + ID = 1, + Slug = "john-wick" + }, false); + Episode episode = await _repository.Get(3); + Assert.Equal("john-wick", episode.Slug); + } } } \ No newline at end of file diff --git a/Kyoo.Tests/Library/SpecificTests/LibraryItemTest.cs b/Kyoo.Tests/Library/SpecificTests/LibraryItemTest.cs index 595ca736..b2db4f66 100644 --- a/Kyoo.Tests/Library/SpecificTests/LibraryItemTest.cs +++ b/Kyoo.Tests/Library/SpecificTests/LibraryItemTest.cs @@ -1,3 +1,4 @@ +using System; using System.Threading.Tasks; using Kyoo.Controllers; using Kyoo.Models; @@ -29,9 +30,11 @@ namespace Kyoo.Tests.Library public abstract class ALibraryItemTest { private readonly ILibraryItemRepository _repository; + private readonly RepositoryActivator _repositories; - public ALibraryItemTest(RepositoryActivator repositories) + protected ALibraryItemTest(RepositoryActivator repositories) { + _repositories = repositories; _repository = repositories.LibraryManager.LibraryItemRepository; } @@ -56,5 +59,31 @@ namespace Kyoo.Tests.Library LibraryItem actual = await _repository.Get(-1); KAssert.DeepEqual(expected, actual); } + + [Fact] + public async Task GetShowSlugTests() + { + LibraryItem expected = new(TestSample.Get()); + LibraryItem actual = await _repository.Get(TestSample.Get().Slug); + KAssert.DeepEqual(expected, actual); + } + + [Fact] + public async Task GetCollectionSlugTests() + { + LibraryItem expected = new(TestSample.Get()); + LibraryItem actual = await _repository.Get(TestSample.Get().Slug); + KAssert.DeepEqual(expected, actual); + } + + [Fact] + public async Task GetDuplicatedSlugTests() + { + await _repositories.LibraryManager.Create(new Collection() + { + Slug = TestSample.Get().Slug + }); + await Assert.ThrowsAsync(() => _repository.Get(TestSample.Get().Slug)); + } } } \ No newline at end of file diff --git a/Kyoo.Tests/Library/TestSample.cs b/Kyoo.Tests/Library/TestSample.cs index 2dea690a..f5651b80 100644 --- a/Kyoo.Tests/Library/TestSample.cs +++ b/Kyoo.Tests/Library/TestSample.cs @@ -154,5 +154,20 @@ namespace Kyoo.Tests ReleaseDate = new DateTime(2020, 06, 05) }; } + + public static Episode GetMovieEpisode() + { + return new() + { + ID = 3, + ShowSlug = "anohana", + ShowID = 1, + Path = "/home/kyoo/john-wick", + Thumb = "thumb", + Title = "John wick", + Overview = "A movie episode test", + ReleaseDate = new DateTime(1595, 05, 12) + }; + } } } \ No newline at end of file