diff --git a/Kyoo.Common/Models/Resources/Episode.cs b/Kyoo.Common/Models/Resources/Episode.cs index 692e951c..e5a677d4 100644 --- a/Kyoo.Common/Models/Resources/Episode.cs +++ b/Kyoo.Common/Models/Resources/Episode.cs @@ -20,7 +20,7 @@ namespace Kyoo.Models public string Slug { get => GetSlug(ShowSlug, SeasonNumber, EpisodeNumber, AbsoluteNumber); - set + [UsedImplicitly] private set { Match match = Regex.Match(value, @"(?.*)-s(?\d*)e(?\d*)"); diff --git a/Kyoo.Common/Models/Resources/Season.cs b/Kyoo.Common/Models/Resources/Season.cs index 35bb6ffe..142b7e24 100644 --- a/Kyoo.Common/Models/Resources/Season.cs +++ b/Kyoo.Common/Models/Resources/Season.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text.RegularExpressions; +using JetBrains.Annotations; using Kyoo.Controllers; using Kyoo.Models.Attributes; @@ -18,7 +19,7 @@ namespace Kyoo.Models public string Slug { get => $"{ShowSlug}-s{SeasonNumber}"; - set + [UsedImplicitly] private set { Match match = Regex.Match(value, @"(?.*)-s(?\d*)"); diff --git a/Kyoo.Common/Models/Resources/Track.cs b/Kyoo.Common/Models/Resources/Track.cs index 17736e07..21aa9d63 100644 --- a/Kyoo.Common/Models/Resources/Track.cs +++ b/Kyoo.Common/Models/Resources/Track.cs @@ -2,6 +2,7 @@ using System.Globalization; using System.Linq; using System.Text.RegularExpressions; +using JetBrains.Annotations; using Kyoo.Models.Attributes; namespace Kyoo.Models @@ -48,7 +49,7 @@ namespace Kyoo.Models }; return $"{EpisodeSlug}.{type}{Language}{index}{(IsForced ? "-forced" : "")}{codec}"; } - set + [UsedImplicitly] private set { Match match = Regex.Match(value, @"(?.*)-s(?\d+)e(?\d+)" + @"(\.(?\w*))?\.(?.{0,3})(?-forced)?(\..\w)?"); diff --git a/Kyoo.CommonAPI/DatabaseContext.cs b/Kyoo.CommonAPI/DatabaseContext.cs index cb6762b0..a2b7eeb2 100644 --- a/Kyoo.CommonAPI/DatabaseContext.cs +++ b/Kyoo.CommonAPI/DatabaseContext.cs @@ -302,15 +302,34 @@ namespace Kyoo modelBuilder.Entity() .HasIndex(x => new {x.ShowID, x.SeasonNumber}) .IsUnique(); + modelBuilder.Entity() + .HasIndex(x => x.Slug) + .IsUnique(); modelBuilder.Entity() .HasIndex(x => new {x.ShowID, x.SeasonNumber, x.EpisodeNumber, x.AbsoluteNumber}) .IsUnique(); + modelBuilder.Entity() + .HasIndex(x => x.Slug) + .IsUnique(); modelBuilder.Entity() .HasIndex(x => new {x.EpisodeID, x.Type, x.Language, x.TrackIndex, x.IsForced}) .IsUnique(); + modelBuilder.Entity() + .HasIndex(x => x.Slug) + .IsUnique(); modelBuilder.Entity() .HasIndex(x => x.Slug) .IsUnique(); + + modelBuilder.Entity() + .Property(x => x.Slug) + .ValueGeneratedOnAddOrUpdate(); + modelBuilder.Entity() + .Property(x => x.Slug) + .ValueGeneratedOnAddOrUpdate(); + modelBuilder.Entity() + .Property(x => x.Slug) + .ValueGeneratedOnAddOrUpdate(); } /// diff --git a/Kyoo.Postgresql/Migrations/20210619153358_Initial.Designer.cs b/Kyoo.Postgresql/Migrations/20210621175845_Initial.Designer.cs similarity index 98% rename from Kyoo.Postgresql/Migrations/20210619153358_Initial.Designer.cs rename to Kyoo.Postgresql/Migrations/20210621175845_Initial.Designer.cs index a4228834..8b99205c 100644 --- a/Kyoo.Postgresql/Migrations/20210619153358_Initial.Designer.cs +++ b/Kyoo.Postgresql/Migrations/20210621175845_Initial.Designer.cs @@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Kyoo.Postgresql.Migrations { [DbContext(typeof(PostgresContext))] - [Migration("20210619153358_Initial")] + [Migration("20210621175845_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -86,6 +86,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("integer"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("Thumb") @@ -98,6 +99,9 @@ namespace Kyoo.Postgresql.Migrations b.HasIndex("SeasonID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") .IsUnique(); @@ -432,6 +436,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("integer"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("StartDate") @@ -442,6 +447,9 @@ namespace Kyoo.Postgresql.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber") .IsUnique(); @@ -559,6 +567,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("text"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("Title") @@ -572,6 +581,9 @@ namespace Kyoo.Postgresql.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("EpisodeID", "Type", "Language", "TrackIndex", "IsForced") .IsUnique(); diff --git a/Kyoo.Postgresql/Migrations/20210619153358_Initial.cs b/Kyoo.Postgresql/Migrations/20210621175845_Initial.cs similarity index 98% rename from Kyoo.Postgresql/Migrations/20210619153358_Initial.cs rename to Kyoo.Postgresql/Migrations/20210621175845_Initial.cs index d6d70251..7fe643bd 100644 --- a/Kyoo.Postgresql/Migrations/20210619153358_Initial.cs +++ b/Kyoo.Postgresql/Migrations/20210621175845_Initial.cs @@ -564,6 +564,12 @@ namespace Kyoo.Postgresql.Migrations columns: new[] { "ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber" }, unique: true); + migrationBuilder.CreateIndex( + name: "IX_Episodes_Slug", + table: "Episodes", + column: "Slug", + unique: true); + migrationBuilder.CreateIndex( name: "IX_Genres_Slug", table: "Genres", @@ -654,6 +660,12 @@ namespace Kyoo.Postgresql.Migrations columns: new[] { "ShowID", "SeasonNumber" }, unique: true); + migrationBuilder.CreateIndex( + name: "IX_Seasons_Slug", + table: "Seasons", + column: "Slug", + unique: true); + migrationBuilder.CreateIndex( name: "IX_Shows_Slug", table: "Shows", @@ -677,6 +689,12 @@ namespace Kyoo.Postgresql.Migrations columns: new[] { "EpisodeID", "Type", "Language", "TrackIndex", "IsForced" }, unique: true); + migrationBuilder.CreateIndex( + name: "IX_Tracks_Slug", + table: "Tracks", + column: "Slug", + unique: true); + migrationBuilder.CreateIndex( name: "IX_Users_Slug", table: "Users", diff --git a/Kyoo.Postgresql/Migrations/20210620120239_Triggers.Designer.cs b/Kyoo.Postgresql/Migrations/20210621175855_Triggers.Designer.cs similarity index 98% rename from Kyoo.Postgresql/Migrations/20210620120239_Triggers.Designer.cs rename to Kyoo.Postgresql/Migrations/20210621175855_Triggers.Designer.cs index 6b87547b..6a4a0163 100644 --- a/Kyoo.Postgresql/Migrations/20210620120239_Triggers.Designer.cs +++ b/Kyoo.Postgresql/Migrations/20210621175855_Triggers.Designer.cs @@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace Kyoo.Postgresql.Migrations { [DbContext(typeof(PostgresContext))] - [Migration("20210620120239_Triggers")] + [Migration("20210621175855_Triggers")] partial class Triggers { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -86,6 +86,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("integer"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("Thumb") @@ -98,6 +99,9 @@ namespace Kyoo.Postgresql.Migrations b.HasIndex("SeasonID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") .IsUnique(); @@ -432,6 +436,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("integer"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("StartDate") @@ -442,6 +447,9 @@ namespace Kyoo.Postgresql.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber") .IsUnique(); @@ -559,6 +567,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("text"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("Title") @@ -572,6 +581,9 @@ namespace Kyoo.Postgresql.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("EpisodeID", "Type", "Language", "TrackIndex", "IsForced") .IsUnique(); diff --git a/Kyoo.Postgresql/Migrations/20210620120239_Triggers.cs b/Kyoo.Postgresql/Migrations/20210621175855_Triggers.cs similarity index 59% rename from Kyoo.Postgresql/Migrations/20210620120239_Triggers.cs rename to Kyoo.Postgresql/Migrations/20210621175855_Triggers.cs index 268ee108..6f6ed291 100644 --- a/Kyoo.Postgresql/Migrations/20210620120239_Triggers.cs +++ b/Kyoo.Postgresql/Migrations/20210621175855_Triggers.cs @@ -2,10 +2,10 @@ namespace Kyoo.Postgresql.Migrations { - public partial class Triggers : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { + public partial class Triggers : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { migrationBuilder.Sql(@" CREATE FUNCTION season_slug_update() RETURNS TRIGGER @@ -14,13 +14,9 @@ namespace Kyoo.Postgresql.Migrations BEGIN NEW.""Slug"" := CONCAT( (SELECT ""Slug"" FROM ""Shows"" WHERE ""ID"" = NEW.""ShowID""), - NEW.""ShowID"", - OLD.""SeasonNumber"", - NEW.""SeasonNumber"", '-s', NEW.""SeasonNumber"" ); - NEW.""Poster"" := 'NICE'; RETURN NEW; END $$;"); @@ -41,17 +37,17 @@ namespace Kyoo.Postgresql.Migrations END $$;"); - migrationBuilder.Sql(@" + migrationBuilder.Sql(@" CREATE TRIGGER ""ShowSlug"" AFTER UPDATE OF ""Slug"" ON ""Shows"" FOR EACH ROW EXECUTE PROCEDURE show_slug_update();"); - } + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.Sql(@"DROP FUNCTION ""season_slug_update"";"); - migrationBuilder.Sql(@"DROP TRIGGER ""SeasonSlug"";"); - migrationBuilder.Sql(@"DROP FUNCTION ""show_slug_update"";"); - migrationBuilder.Sql(@"DROP TRIGGER ""ShowSlug"";"); - } - } -} + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql(@"DROP FUNCTION ""season_slug_update"";"); + migrationBuilder.Sql(@"DROP TRIGGER ""SeasonSlug"";"); + migrationBuilder.Sql(@"DROP FUNCTION ""show_slug_update"";"); + migrationBuilder.Sql(@"DROP TRIGGER ""ShowSlug"";"); + } + } +} \ No newline at end of file diff --git a/Kyoo.Postgresql/Migrations/PostgresContextModelSnapshot.cs b/Kyoo.Postgresql/Migrations/PostgresContextModelSnapshot.cs index f4ef9dd2..14f61708 100644 --- a/Kyoo.Postgresql/Migrations/PostgresContextModelSnapshot.cs +++ b/Kyoo.Postgresql/Migrations/PostgresContextModelSnapshot.cs @@ -84,6 +84,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("integer"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("Thumb") @@ -96,6 +97,9 @@ namespace Kyoo.Postgresql.Migrations b.HasIndex("SeasonID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") .IsUnique(); @@ -430,6 +434,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("integer"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("StartDate") @@ -440,6 +445,9 @@ namespace Kyoo.Postgresql.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber") .IsUnique(); @@ -557,6 +565,7 @@ namespace Kyoo.Postgresql.Migrations .HasColumnType("text"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("text"); b.Property("Title") @@ -570,6 +579,9 @@ namespace Kyoo.Postgresql.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("EpisodeID", "Type", "Language", "TrackIndex", "IsForced") .IsUnique(); diff --git a/Kyoo.SqLite/Migrations/20210619154617_Initial.Designer.cs b/Kyoo.SqLite/Migrations/20210621175330_Initial.Designer.cs similarity index 98% rename from Kyoo.SqLite/Migrations/20210619154617_Initial.Designer.cs rename to Kyoo.SqLite/Migrations/20210621175330_Initial.Designer.cs index 6dc81b0e..26e94354 100644 --- a/Kyoo.SqLite/Migrations/20210619154617_Initial.Designer.cs +++ b/Kyoo.SqLite/Migrations/20210621175330_Initial.Designer.cs @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Kyoo.SqLite.Migrations { [DbContext(typeof(SqLiteContext))] - [Migration("20210619154617_Initial")] + [Migration("20210621175330_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -76,6 +76,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("INTEGER"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("Thumb") @@ -88,6 +89,9 @@ namespace Kyoo.SqLite.Migrations b.HasIndex("SeasonID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") .IsUnique(); @@ -416,6 +420,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("INTEGER"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("StartDate") @@ -426,6 +431,9 @@ namespace Kyoo.SqLite.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber") .IsUnique(); @@ -540,6 +548,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("TEXT"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("Title") @@ -553,6 +562,9 @@ namespace Kyoo.SqLite.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("EpisodeID", "Type", "Language", "TrackIndex", "IsForced") .IsUnique(); diff --git a/Kyoo.SqLite/Migrations/20210619154617_Initial.cs b/Kyoo.SqLite/Migrations/20210621175330_Initial.cs similarity index 98% rename from Kyoo.SqLite/Migrations/20210619154617_Initial.cs rename to Kyoo.SqLite/Migrations/20210621175330_Initial.cs index a2bbf56f..fb73c02a 100644 --- a/Kyoo.SqLite/Migrations/20210619154617_Initial.cs +++ b/Kyoo.SqLite/Migrations/20210621175330_Initial.cs @@ -556,6 +556,12 @@ namespace Kyoo.SqLite.Migrations columns: new[] { "ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber" }, unique: true); + migrationBuilder.CreateIndex( + name: "IX_Episodes_Slug", + table: "Episodes", + column: "Slug", + unique: true); + migrationBuilder.CreateIndex( name: "IX_Genres_Slug", table: "Genres", @@ -646,6 +652,12 @@ namespace Kyoo.SqLite.Migrations columns: new[] { "ShowID", "SeasonNumber" }, unique: true); + migrationBuilder.CreateIndex( + name: "IX_Seasons_Slug", + table: "Seasons", + column: "Slug", + unique: true); + migrationBuilder.CreateIndex( name: "IX_Shows_Slug", table: "Shows", @@ -669,6 +681,12 @@ namespace Kyoo.SqLite.Migrations columns: new[] { "EpisodeID", "Type", "Language", "TrackIndex", "IsForced" }, unique: true); + migrationBuilder.CreateIndex( + name: "IX_Tracks_Slug", + table: "Tracks", + column: "Slug", + unique: true); + migrationBuilder.CreateIndex( name: "IX_Users_Slug", table: "Users", diff --git a/Kyoo.SqLite/Migrations/20210619154654_Triggers.Designer.cs b/Kyoo.SqLite/Migrations/20210621175342_Triggers.Designer.cs similarity index 98% rename from Kyoo.SqLite/Migrations/20210619154654_Triggers.Designer.cs rename to Kyoo.SqLite/Migrations/20210621175342_Triggers.Designer.cs index 01d5e928..0f99af22 100644 --- a/Kyoo.SqLite/Migrations/20210619154654_Triggers.Designer.cs +++ b/Kyoo.SqLite/Migrations/20210621175342_Triggers.Designer.cs @@ -9,7 +9,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace Kyoo.SqLite.Migrations { [DbContext(typeof(SqLiteContext))] - [Migration("20210619154654_Triggers")] + [Migration("20210621175342_Triggers")] partial class Triggers { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -76,6 +76,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("INTEGER"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("Thumb") @@ -88,6 +89,9 @@ namespace Kyoo.SqLite.Migrations b.HasIndex("SeasonID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") .IsUnique(); @@ -416,6 +420,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("INTEGER"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("StartDate") @@ -426,6 +431,9 @@ namespace Kyoo.SqLite.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber") .IsUnique(); @@ -540,6 +548,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("TEXT"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("Title") @@ -553,6 +562,9 @@ namespace Kyoo.SqLite.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("EpisodeID", "Type", "Language", "TrackIndex", "IsForced") .IsUnique(); diff --git a/Kyoo.SqLite/Migrations/20210619154654_Triggers.cs b/Kyoo.SqLite/Migrations/20210621175342_Triggers.cs similarity index 100% rename from Kyoo.SqLite/Migrations/20210619154654_Triggers.cs rename to Kyoo.SqLite/Migrations/20210621175342_Triggers.cs diff --git a/Kyoo.SqLite/Migrations/SqLiteContextModelSnapshot.cs b/Kyoo.SqLite/Migrations/SqLiteContextModelSnapshot.cs index a03f5cbe..fc0b3cbc 100644 --- a/Kyoo.SqLite/Migrations/SqLiteContextModelSnapshot.cs +++ b/Kyoo.SqLite/Migrations/SqLiteContextModelSnapshot.cs @@ -74,6 +74,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("INTEGER"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("Thumb") @@ -86,6 +87,9 @@ namespace Kyoo.SqLite.Migrations b.HasIndex("SeasonID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber", "EpisodeNumber", "AbsoluteNumber") .IsUnique(); @@ -414,6 +418,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("INTEGER"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("StartDate") @@ -424,6 +429,9 @@ namespace Kyoo.SqLite.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("ShowID", "SeasonNumber") .IsUnique(); @@ -538,6 +546,7 @@ namespace Kyoo.SqLite.Migrations .HasColumnType("TEXT"); b.Property("Slug") + .ValueGeneratedOnAddOrUpdate() .HasColumnType("TEXT"); b.Property("Title") @@ -551,6 +560,9 @@ namespace Kyoo.SqLite.Migrations b.HasKey("ID"); + b.HasIndex("Slug") + .IsUnique(); + b.HasIndex("EpisodeID", "Type", "Language", "TrackIndex", "IsForced") .IsUnique(); diff --git a/Kyoo.Tests/Kyoo.Tests.csproj b/Kyoo.Tests/Kyoo.Tests.csproj index 265ccb98..9d1e8311 100644 --- a/Kyoo.Tests/Kyoo.Tests.csproj +++ b/Kyoo.Tests/Kyoo.Tests.csproj @@ -16,6 +16,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/Kyoo.Tests/Library/SpecificTests/SeasonTests.cs b/Kyoo.Tests/Library/SpecificTests/SeasonTests.cs index 3e945251..7f81bc3f 100644 --- a/Kyoo.Tests/Library/SpecificTests/SeasonTests.cs +++ b/Kyoo.Tests/Library/SpecificTests/SeasonTests.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Kyoo.Controllers; using Kyoo.Models; using Xunit; +using Xunit.Extensions.Ordering; namespace Kyoo.Tests.SpecificTests { @@ -11,9 +12,9 @@ namespace Kyoo.Tests.SpecificTests : base(new RepositoryActivator()) { } } - - [Collection(nameof(Postgresql))] - public class PostgresSeasonTests : SeasonTests + + + public class PostgresSeasonTests : SeasonTests, IAssemblyFixture { public PostgresSeasonTests(PostgresFixture postgres) : base(new RepositoryActivator(postgres)) @@ -67,7 +68,6 @@ namespace Kyoo.Tests.SpecificTests ShowID = TestSample.Get().ID, SeasonNumber = 2 }); - Assert.Equal($"{TestSample.Get().Slug}-s2_NICE", season.Slug + "_" + season.Poster); Assert.Equal($"{TestSample.Get().Slug}-s2", season.Slug); } } diff --git a/Kyoo.Tests/Library/SpecificTests/ShowTests.cs b/Kyoo.Tests/Library/SpecificTests/ShowTests.cs index 2f1bf331..d16f13e9 100644 --- a/Kyoo.Tests/Library/SpecificTests/ShowTests.cs +++ b/Kyoo.Tests/Library/SpecificTests/ShowTests.cs @@ -6,6 +6,7 @@ using Kyoo.Controllers; using Kyoo.Models; using Microsoft.EntityFrameworkCore; using Xunit; +using Xunit.Extensions.Ordering; namespace Kyoo.Tests.SpecificTests { @@ -16,8 +17,7 @@ namespace Kyoo.Tests.SpecificTests { } } - [Collection(nameof(Postgresql))] - public class PostgresShowTests : ShowTests + public class PostgresShowTests : ShowTests, IAssemblyFixture { public PostgresShowTests(PostgresFixture postgres) : base(new RepositoryActivator(postgres)) @@ -283,6 +283,5 @@ namespace Kyoo.Tests.SpecificTests Assert.Equal(0, await Repositories.LibraryManager.SeasonRepository.GetCount()); Assert.Equal(0, await Repositories.LibraryManager.EpisodeRepository.GetCount()); } - } } \ No newline at end of file diff --git a/Kyoo.Tests/Library/TestContext.cs b/Kyoo.Tests/Library/TestContext.cs index 37e1d7b8..82406454 100644 --- a/Kyoo.Tests/Library/TestContext.cs +++ b/Kyoo.Tests/Library/TestContext.cs @@ -8,6 +8,8 @@ using Microsoft.Extensions.Logging; using Npgsql; using Xunit; +[assembly: TestFramework("Xunit.Extensions.Ordering.TestFramework", "Xunit.Extensions.Ordering")] + namespace Kyoo.Tests { public sealed class SqLiteTestContext : TestContext @@ -29,6 +31,9 @@ namespace Kyoo.Tests _context = new DbContextOptionsBuilder() .UseSqlite(_connection) + .UseLoggerFactory(LoggerFactory.Create(x => x.AddConsole())) + .EnableSensitiveDataLogging() + .EnableDetailedErrors() .Options; using DatabaseContext context = New(); @@ -52,10 +57,6 @@ namespace Kyoo.Tests } } - [CollectionDefinition(nameof(Postgresql))] - public class PostgresCollection : ICollectionFixture - {} - public sealed class PostgresFixture : IDisposable { private readonly DbContextOptions _options;