diff --git a/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs b/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs
index 94fff8c8..f9161d96 100644
--- a/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs
+++ b/back/src/Kyoo.Abstractions/Models/Resources/Episode.cs
@@ -186,14 +186,11 @@ namespace Kyoo.Abstractions.Models
/// If you don't know it or this is a movie, use null
///
/// The slug corresponding to the given arguments
- /// The given show slug was null.
public static string GetSlug(string showSlug,
int? seasonNumber,
int? episodeNumber,
int? absoluteNumber = null)
{
- if (showSlug == null)
- throw new ArgumentNullException(nameof(showSlug));
return seasonNumber switch
{
null when absoluteNumber == null => showSlug,
diff --git a/back/src/Kyoo.Abstractions/Models/Utils/Identifier.cs b/back/src/Kyoo.Abstractions/Models/Utils/Identifier.cs
index 0c6c9327..c0a1cbdc 100644
--- a/back/src/Kyoo.Abstractions/Models/Utils/Identifier.cs
+++ b/back/src/Kyoo.Abstractions/Models/Utils/Identifier.cs
@@ -59,8 +59,6 @@ namespace Kyoo.Abstractions.Models.Utils
/// The slug of the resource.
public Identifier(string slug)
{
- if (slug == null)
- throw new ArgumentNullException(nameof(slug));
_slug = slug;
}
diff --git a/back/src/Kyoo.Abstractions/Utility/EnumerableExtensions.cs b/back/src/Kyoo.Abstractions/Utility/EnumerableExtensions.cs
index 5d3d9038..05e18f49 100644
--- a/back/src/Kyoo.Abstractions/Utility/EnumerableExtensions.cs
+++ b/back/src/Kyoo.Abstractions/Utility/EnumerableExtensions.cs
@@ -33,16 +33,10 @@ namespace Kyoo.Utils
/// The enumerable to check
/// The action to execute is the list is empty
/// The type of items inside the list
- /// The iterable and the action can't be null.
/// The iterator proxied, there is no dual iterations.
[LinqTunnel]
public static IEnumerable IfEmpty(this IEnumerable self, Action action)
{
- if (self == null)
- throw new ArgumentNullException(nameof(self));
- if (action == null)
- throw new ArgumentNullException(nameof(action));
-
static IEnumerable Generator(IEnumerable self, Action action)
{
using IEnumerator enumerator = self.GetEnumerator();
diff --git a/back/src/Kyoo.Abstractions/Utility/Merger.cs b/back/src/Kyoo.Abstractions/Utility/Merger.cs
index 6e628a53..ccbe2b48 100644
--- a/back/src/Kyoo.Abstractions/Utility/Merger.cs
+++ b/back/src/Kyoo.Abstractions/Utility/Merger.cs
@@ -58,7 +58,7 @@ namespace Kyoo.Utils
hasChanged = false;
if (second == null)
return first;
- hasChanged = second.Any(x => x.Value?.Equals(first[x.Key]) == false);
+ hasChanged = second.Any(x => !first.ContainsKey(x.Key) || x.Value?.Equals(first[x.Key]) == false);
foreach ((T key, T2 value) in first)
second.TryAdd(key, value);
return second;
diff --git a/back/src/Kyoo.Abstractions/Utility/Utility.cs b/back/src/Kyoo.Abstractions/Utility/Utility.cs
index 57b8b4ce..e3e91694 100644
--- a/back/src/Kyoo.Abstractions/Utility/Utility.cs
+++ b/back/src/Kyoo.Abstractions/Utility/Utility.cs
@@ -104,13 +104,8 @@ namespace Kyoo.Utils
/// The type to check
/// The generic type to check against (Only generic types are supported like typeof(IEnumerable<>).
/// True if obj inherit from genericType. False otherwise
- /// obj and genericType can't be null
public static bool IsOfGenericType(Type type, Type genericType)
{
- if (type == null)
- throw new ArgumentNullException(nameof(type));
- if (genericType == null)
- throw new ArgumentNullException(nameof(genericType));
if (!genericType.IsGenericType)
throw new ArgumentException($"{nameof(genericType)} is not a generic type.");
@@ -128,14 +123,9 @@ namespace Kyoo.Utils
/// The type to check
/// The generic type to check against (Only generic types are supported like typeof(IEnumerable<>).
/// The generic definition of genericType that type inherit or null if type does not implement the generic type.
- /// and can't be null
/// must be a generic type
public static Type? GetGenericDefinition(Type type, Type genericType)
{
- if (type == null)
- throw new ArgumentNullException(nameof(type));
- if (genericType == null)
- throw new ArgumentNullException(nameof(genericType));
if (!genericType.IsGenericType)
throw new ArgumentException($"{nameof(genericType)} is not a generic type.");
@@ -272,12 +262,6 @@ namespace Kyoo.Utils
Type[] types,
params object?[] args)
{
- if (owner == null)
- throw new ArgumentNullException(nameof(owner));
- if (methodName == null)
- throw new ArgumentNullException(nameof(methodName));
- if (types == null)
- throw new ArgumentNullException(nameof(types));
if (types.Length < 1)
throw new ArgumentException($"The {nameof(types)} array is empty. At least one type is needed.");
MethodInfo method = GetMethod(owner, BindingFlags.Static, methodName, types, args);
diff --git a/back/src/Kyoo.Core/Controllers/LibraryManager.cs b/back/src/Kyoo.Core/Controllers/LibraryManager.cs
index 0cab6155..318e7aff 100644
--- a/back/src/Kyoo.Core/Controllers/LibraryManager.cs
+++ b/back/src/Kyoo.Core/Controllers/LibraryManager.cs
@@ -209,8 +209,6 @@ namespace Kyoo.Core.Controllers
where T : class, IResource
where T2 : class, IResource
{
- if (member == null)
- throw new ArgumentNullException(nameof(member));
return Load(obj, Utility.GetPropertyName(member), force);
}
@@ -219,8 +217,6 @@ namespace Kyoo.Core.Controllers
where T : class, IResource
where T2 : class
{
- if (member == null)
- throw new ArgumentNullException(nameof(member));
return Load(obj, Utility.GetPropertyName(member), force);
}
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs
index d8489e10..f5d19bc3 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs
@@ -82,9 +82,6 @@ namespace Kyoo.Core.Controllers
///
public override async Task Delete(Collection obj)
{
- if (obj == null)
- throw new ArgumentNullException(nameof(obj));
-
_database.Entry(obj).State = EntityState.Deleted;
await _database.SaveChangesAsync();
await base.Delete(obj);
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs
index f1a49d41..5fba8395 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs
@@ -170,9 +170,6 @@ namespace Kyoo.Core.Controllers
///
public override async Task Delete(Episode obj)
{
- if (obj == null)
- throw new ArgumentNullException(nameof(obj));
-
int epCount = await _database.Episodes.Where(x => x.ShowId == obj.ShowId).Take(2).CountAsync();
_database.Entry(obj).State = EntityState.Deleted;
await _database.SaveChangesAsync();
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs
index 778d9a9f..5c3340d8 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs
@@ -30,6 +30,7 @@ using Kyoo.Abstractions.Models.Exceptions;
using Kyoo.Core.Api;
using Kyoo.Utils;
using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.ChangeTracking;
namespace Kyoo.Core.Controllers
{
@@ -338,14 +339,15 @@ namespace Kyoo.Core.Controllers
///
public virtual async Task Create(T obj)
{
- if (obj == null)
- throw new ArgumentNullException(nameof(obj));
await Validate(obj);
if (obj is IThumbnails thumbs)
{
- Database.Entry(thumbs).Reference(x => x.Poster).IsModified = thumbs.Poster != null;
- Database.Entry(thumbs).Reference(x => x.Thumbnail).IsModified = thumbs.Thumbnail != null;
- Database.Entry(thumbs).Reference(x => x.Logo).IsModified = thumbs.Logo != null;
+ if (thumbs.Poster != null)
+ Database.Entry(thumbs).Reference(x => x.Poster).TargetEntry.State = EntityState.Added;
+ if (thumbs.Thumbnail != null)
+ Database.Entry(thumbs).Reference(x => x.Thumbnail).TargetEntry.State = EntityState.Added;
+ if (thumbs.Logo != null)
+ Database.Entry(thumbs).Reference(x => x.Logo).TargetEntry.State = EntityState.Added;
}
return obj;
}
@@ -395,7 +397,7 @@ namespace Kyoo.Core.Controllers
T old = await GetWithTracking(edited.Id);
Merger.Complete(old, edited, x => x.GetCustomAttribute() == null);
- await EditRelations(old, edited, true);
+ await EditRelations(old, edited);
await Database.SaveChangesAsync();
OnEdited?.Invoke(old);
return old;
@@ -418,6 +420,7 @@ namespace Kyoo.Core.Controllers
if (!await patch(resource))
throw new ArgumentException("Could not patch resource");
+
await Database.SaveChangesAsync();
OnEdited?.Invoke(resource);
return resource;
@@ -439,11 +442,8 @@ namespace Kyoo.Core.Controllers
/// The new version of .
/// This item will be saved on the database and replace
///
- ///
- /// A boolean to indicate if all values of resource should be discarded or not.
- ///
/// A representing the asynchronous operation.
- protected virtual Task EditRelations(T resource, T changed, bool resetOld)
+ protected virtual Task EditRelations(T resource, T changed)
{
if (resource is IThumbnails thumbs && changed is IThumbnails chng)
{
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs
index 49290f31..cc5f89eb 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs
@@ -22,7 +22,6 @@ using System.Threading.Tasks;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models;
using Kyoo.Postgresql;
-using Kyoo.Utils;
using Microsoft.EntityFrameworkCore;
namespace Kyoo.Core.Controllers
@@ -111,17 +110,17 @@ namespace Kyoo.Core.Controllers
}
///
- protected override async Task EditRelations(Movie resource, Movie changed, bool resetOld)
+ protected override async Task EditRelations(Movie resource, Movie changed)
{
await Validate(changed);
- if (changed.Studio != null || resetOld)
+ if (changed.Studio != null || changed.StudioID == null)
{
await Database.Entry(resource).Reference(x => x.Studio).LoadAsync();
resource.Studio = changed.Studio;
}
- if (changed.People != null || resetOld)
+ if (changed.People != null)
{
await Database.Entry(resource).Collection(x => x.People).LoadAsync();
resource.People = changed.People;
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs
index ee52b798..a01b2c4f 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs
@@ -99,11 +99,11 @@ namespace Kyoo.Core.Controllers
}
///
- protected override async Task EditRelations(People resource, People changed, bool resetOld)
+ protected override async Task EditRelations(People resource, People changed)
{
await Validate(changed);
- if (changed.Roles != null || resetOld)
+ if (changed.Roles != null)
{
await Database.Entry(resource).Collection(x => x.Roles).LoadAsync();
resource.Roles = changed.Roles;
@@ -113,9 +113,6 @@ namespace Kyoo.Core.Controllers
///
public override async Task Delete(People obj)
{
- if (obj == null)
- throw new ArgumentNullException(nameof(obj));
-
_database.Entry(obj).State = EntityState.Deleted;
obj.Roles.ForEach(x => _database.Entry(x).State = EntityState.Deleted);
await _database.SaveChangesAsync();
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs
index 0265fc4a..d9d41d2c 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs
@@ -137,9 +137,6 @@ namespace Kyoo.Core.Controllers
///
public override async Task Delete(Season obj)
{
- if (obj == null)
- throw new ArgumentNullException(nameof(obj));
-
_database.Remove(obj);
await _database.SaveChangesAsync();
await base.Delete(obj);
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs
index 810300a3..0a829e0f 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs
@@ -113,17 +113,17 @@ namespace Kyoo.Core.Controllers
}
///
- protected override async Task EditRelations(Show resource, Show changed, bool resetOld)
+ protected override async Task EditRelations(Show resource, Show changed)
{
await Validate(changed);
- if (changed.Studio != null || resetOld)
+ if (changed.Studio != null || changed.StudioId == null)
{
await Database.Entry(resource).Reference(x => x.Studio).LoadAsync();
resource.Studio = changed.Studio;
}
- if (changed.People != null || resetOld)
+ if (changed.People != null)
{
await Database.Entry(resource).Collection(x => x.People).LoadAsync();
resource.People = changed.People;
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs
index 738f3fb4..536accba 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs
@@ -82,9 +82,6 @@ namespace Kyoo.Core.Controllers
///
public override async Task Delete(Studio obj)
{
- if (obj == null)
- throw new ArgumentNullException(nameof(obj));
-
_database.Entry(obj).State = EntityState.Deleted;
await _database.SaveChangesAsync();
await base.Delete(obj);
diff --git a/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs
index bf6f3e5e..c91c8a49 100644
--- a/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs
+++ b/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs
@@ -76,9 +76,6 @@ namespace Kyoo.Core.Controllers
///
public override async Task Delete(User obj)
{
- if (obj == null)
- throw new ArgumentNullException(nameof(obj));
-
_database.Entry(obj).State = EntityState.Deleted;
await _database.SaveChangesAsync();
await base.Delete(obj);
diff --git a/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs b/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs
index aa2fee16..c9ce640d 100644
--- a/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs
+++ b/back/tests/Kyoo.Tests/Database/RepositoryActivator.cs
@@ -41,6 +41,7 @@ namespace Kyoo.Tests.Database
StudioRepository studio = new(_NewContext());
PeopleRepository people = new(_NewContext(),
new Lazy(() => LibraryManager.ShowRepository));
+ MovieRepository movies = new(_NewContext(), studio, people);
ShowRepository show = new(_NewContext(), studio, people);
SeasonRepository season = new(_NewContext(), show);
LibraryItemRepository libraryItem = new(_NewContext());
@@ -50,6 +51,7 @@ namespace Kyoo.Tests.Database
LibraryManager = new LibraryManager(new IBaseRepository[] {
libraryItem,
collection,
+ movies,
show,
season,
episode,
diff --git a/back/tests/Kyoo.Tests/Database/RepositoryTests.cs b/back/tests/Kyoo.Tests/Database/RepositoryTests.cs
index 0e022ceb..eada621e 100644
--- a/back/tests/Kyoo.Tests/Database/RepositoryTests.cs
+++ b/back/tests/Kyoo.Tests/Database/RepositoryTests.cs
@@ -118,18 +118,6 @@ namespace Kyoo.Tests.Database
KAssert.DeepEqual(expected, await _repository.Get(expected.Slug));
}
- [Fact]
- public async Task CreateNullTest()
- {
- await Assert.ThrowsAsync(() => _repository.Create(null!));
- }
-
- [Fact]
- public async Task CreateIfNotExistNullTest()
- {
- await Assert.ThrowsAsync(() => _repository.CreateIfNotExists(null!));
- }
-
[Fact]
public virtual async Task CreateIfNotExistTest()
{
diff --git a/back/tests/Kyoo.Tests/Database/SpecificTests/CollectionsTests.cs b/back/tests/Kyoo.Tests/Database/SpecificTests/CollectionsTests.cs
index 2094afdb..31fb2b3d 100644
--- a/back/tests/Kyoo.Tests/Database/SpecificTests/CollectionsTests.cs
+++ b/back/tests/Kyoo.Tests/Database/SpecificTests/CollectionsTests.cs
@@ -120,9 +120,7 @@ namespace Kyoo.Tests.Database
await _repository.Edit(value);
await using DatabaseContext database = Repositories.Context.New();
- Collection retrieved = await database.Collections
- .Include(x => x.ExternalId)
- .FirstAsync();
+ Collection retrieved = await database.Collections.FirstAsync();
KAssert.DeepEqual(value, retrieved);
}
@@ -143,9 +141,7 @@ namespace Kyoo.Tests.Database
{
await using DatabaseContext database = Repositories.Context.New();
- Collection retrieved = await database.Collections
- .Include(x => x.ExternalId)
- .FirstAsync();
+ Collection retrieved = await database.Collections.FirstAsync();
KAssert.DeepEqual(value, retrieved);
}
@@ -159,9 +155,7 @@ namespace Kyoo.Tests.Database
{
await using DatabaseContext database = Repositories.Context.New();
- Collection retrieved = await database.Collections
- .Include(x => x.ExternalId)
- .FirstAsync();
+ Collection retrieved = await database.Collections.FirstAsync();
KAssert.DeepEqual(value, retrieved);
}
diff --git a/back/tests/Kyoo.Tests/Database/SpecificTests/EpisodeTests.cs b/back/tests/Kyoo.Tests/Database/SpecificTests/EpisodeTests.cs
index dfb91af4..988ec0c3 100644
--- a/back/tests/Kyoo.Tests/Database/SpecificTests/EpisodeTests.cs
+++ b/back/tests/Kyoo.Tests/Database/SpecificTests/EpisodeTests.cs
@@ -55,12 +55,11 @@ namespace Kyoo.Tests.Database
{
Episode episode = await _repository.Get(1);
Assert.Equal($"{TestSample.Get().Slug}-s1e1", episode.Slug);
- Show show = new()
+ await Repositories.LibraryManager.ShowRepository.Patch(episode.ShowId, (x) =>
{
- Id = episode.ShowId,
- Slug = "new-slug"
- };
- await Repositories.LibraryManager.ShowRepository.Edit(show);
+ x.Slug = "new-slug";
+ return Task.FromResult(true);
+ });
episode = await _repository.Get(1);
Assert.Equal("new-slug-s1e1", episode.Slug);
}
@@ -70,11 +69,10 @@ namespace Kyoo.Tests.Database
{
Episode episode = await _repository.Get(1);
Assert.Equal($"{TestSample.Get().Slug}-s1e1", episode.Slug);
- episode = await _repository.Edit(new Episode
+ episode = await _repository.Patch(1, (x) =>
{
- Id = 1,
- SeasonNumber = 2,
- ShowId = 1
+ x.SeasonNumber = 2;
+ return Task.FromResult(true);
});
Assert.Equal($"{TestSample.Get().Slug}-s2e1", episode.Slug);
episode = await _repository.Get(1);
@@ -86,11 +84,10 @@ namespace Kyoo.Tests.Database
{
Episode episode = await _repository.Get(1);
Assert.Equal($"{TestSample.Get().Slug}-s1e1", episode.Slug);
- episode = await _repository.Edit(new Episode
+ episode = await Repositories.LibraryManager.Patch(episode.Id, (x) =>
{
- Id = 1,
- EpisodeNumber = 2,
- ShowId = 1
+ x.EpisodeNumber = 2;
+ return Task.FromResult(true);
});
Assert.Equal($"{TestSample.Get().Slug}-s1e2", episode.Slug);
episode = await _repository.Get(1);
@@ -100,12 +97,12 @@ namespace Kyoo.Tests.Database
[Fact]
public async Task EpisodeCreationSlugTest()
{
- Episode episode = await _repository.Create(new Episode
- {
- ShowId = TestSample.Get().Id,
- SeasonNumber = 2,
- EpisodeNumber = 4
- });
+ Episode model = TestSample.Get();
+ model.Id = 0;
+ model.ShowId = TestSample.Get().Id;
+ model.SeasonNumber = 2;
+ model.EpisodeNumber = 4;
+ Episode episode = await _repository.Create(model);
Assert.Equal($"{TestSample.Get().Slug}-s2e4", episode.Slug);
}
@@ -127,12 +124,11 @@ namespace Kyoo.Tests.Database
public async Task SlugEditAbsoluteTest()
{
Episode episode = await _repository.Create(TestSample.GetAbsoluteEpisode());
- Show show = new()
+ await Repositories.LibraryManager.ShowRepository.Patch(episode.ShowId, (x) =>
{
- Id = episode.ShowId,
- Slug = "new-slug"
- };
- await Repositories.LibraryManager.ShowRepository.Edit(show);
+ x.Slug = "new-slug";
+ return Task.FromResult(true);
+ });
episode = await _repository.Get(2);
Assert.Equal($"new-slug-3", episode.Slug);
}
@@ -141,11 +137,10 @@ namespace Kyoo.Tests.Database
public async Task AbsoluteNumberEditTest()
{
await _repository.Create(TestSample.GetAbsoluteEpisode());
- Episode episode = await _repository.Edit(new Episode
+ Episode episode = await _repository.Patch(2, (x) =>
{
- Id = 2,
- AbsoluteNumber = 56,
- ShowId = 1
+ x.AbsoluteNumber = 56;
+ return Task.FromResult(true);
});
Assert.Equal($"{TestSample.Get().Slug}-56", episode.Slug);
episode = await _repository.Get(2);
@@ -156,12 +151,11 @@ namespace Kyoo.Tests.Database
public async Task AbsoluteToNormalEditTest()
{
await _repository.Create(TestSample.GetAbsoluteEpisode());
- Episode episode = await _repository.Edit(new Episode
+ Episode episode = await _repository.Patch(2, (x) =>
{
- Id = 2,
- SeasonNumber = 1,
- EpisodeNumber = 2,
- ShowId = 1
+ x.SeasonNumber = 1;
+ x.EpisodeNumber = 2;
+ return Task.FromResult(true);
});
Assert.Equal($"{TestSample.Get().Slug}-s1e2", episode.Slug);
episode = await _repository.Get(2);
@@ -283,12 +277,10 @@ namespace Kyoo.Tests.Database
[InlineData("SuPeR")]
public async Task SearchTest(string query)
{
- Episode value = new()
- {
- Name = "This is a test super title",
- ShowId = 1,
- AbsoluteNumber = 2
- };
+ Episode value = TestSample.Get();
+ value.Id = 0;
+ value.Name = "This is a test super title";
+ value.EpisodeNumber = 56;
await _repository.Create(value);
ICollection ret = await _repository.Search(query);
value.Show = TestSample.Get();
diff --git a/back/tests/Kyoo.Tests/Database/SpecificTests/SeasonTests.cs b/back/tests/Kyoo.Tests/Database/SpecificTests/SeasonTests.cs
index 85a5c3d0..e67fd367 100644
--- a/back/tests/Kyoo.Tests/Database/SpecificTests/SeasonTests.cs
+++ b/back/tests/Kyoo.Tests/Database/SpecificTests/SeasonTests.cs
@@ -53,12 +53,11 @@ namespace Kyoo.Tests.Database
{
Season season = await _repository.Get(1);
Assert.Equal("anohana-s1", season.Slug);
- Show show = new()
+ await Repositories.LibraryManager.ShowRepository.Patch(season.ShowId, (x) =>
{
- Id = season.ShowId,
- Slug = "new-slug"
- };
- await Repositories.LibraryManager.ShowRepository.Edit(show);
+ x.Slug = "new-slug";
+ return Task.FromResult(true);
+ });
season = await _repository.Get(1);
Assert.Equal("new-slug-s1", season.Slug);
}
@@ -68,12 +67,12 @@ namespace Kyoo.Tests.Database
{
Season season = await _repository.Get(1);
Assert.Equal("anohana-s1", season.Slug);
- await _repository.Edit(new Season
+ await _repository.Patch(season.Id, (x) =>
{
- Id = 1,
- SeasonNumber = 2,
- ShowId = 1
- });
+ x.SeasonNumber = 2;
+ return Task.FromResult(true);
+ }
+ );
season = await _repository.Get(1);
Assert.Equal("anohana-s2", season.Slug);
}
diff --git a/back/tests/Kyoo.Tests/Database/SpecificTests/ShowTests.cs b/back/tests/Kyoo.Tests/Database/SpecificTests/ShowTests.cs
index f3a0746d..53bf1d6b 100644
--- a/back/tests/Kyoo.Tests/Database/SpecificTests/ShowTests.cs
+++ b/back/tests/Kyoo.Tests/Database/SpecificTests/ShowTests.cs
@@ -75,9 +75,7 @@ namespace Kyoo.Tests.Database
Assert.Equal(value.Genres, edited.Genres);
await using DatabaseContext database = Repositories.Context.New();
- Show show = await database.Shows
- .Include(x => x.Genres)
- .FirstAsync();
+ Show show = await database.Shows.FirstAsync();
Assert.Equal(value.Slug, show.Slug);
Assert.Equal(value.Genres, show.Genres);
@@ -94,9 +92,7 @@ namespace Kyoo.Tests.Database
Assert.Equal(value.Genres, edited.Genres);
await using DatabaseContext database = Repositories.Context.New();
- Show show = await database.Shows
- .Include(x => x.Genres)
- .FirstAsync();
+ Show show = await database.Shows.FirstAsync();
Assert.Equal(value.Slug, show.Slug);
Assert.Equal(value.Genres, show.Genres);
@@ -113,9 +109,7 @@ namespace Kyoo.Tests.Database
Assert.Equal("studio", edited.Studio!.Slug);
await using DatabaseContext database = Repositories.Context.New();
- Show show = await database.Shows
- .Include(x => x.Studio)
- .FirstAsync();
+ Show show = await database.Shows.Include(x => x.Studio).FirstAsync();
Assert.Equal(value.Slug, show.Slug);
Assert.Equal("studio", show.Studio!.Slug);
@@ -187,13 +181,13 @@ namespace Kyoo.Tests.Database
Show edited = await _repository.Edit(value);
Assert.Equal(value.Slug, edited.Slug);
- Assert.Equal(value.ExternalId, edited.ExternalId);
+ KAssert.DeepEqual(value.ExternalId, edited.ExternalId);
await using DatabaseContext database = Repositories.Context.New();
Show show = await database.Shows.FirstAsync();
Assert.Equal(value.Slug, show.Slug);
- Assert.Equal(value.ExternalId, show.ExternalId);
+ KAssert.DeepEqual(value.ExternalId, show.ExternalId);
}
[Fact]
@@ -227,8 +221,6 @@ namespace Kyoo.Tests.Database
await using DatabaseContext context = Repositories.Context.New();
Show retrieved = await context.Shows
- .Include(x => x.ExternalId)
- .Include(x => x.Genres)
.Include(x => x.People)
.ThenInclude(x => x.People)
.Include(x => x.Studio)
@@ -264,9 +256,7 @@ namespace Kyoo.Tests.Database
Show created = await _repository.Create(expected);
KAssert.DeepEqual(expected, created);
await using DatabaseContext context = Repositories.Context.New();
- Show retrieved = await context.Shows
- .Include(x => x.ExternalId)
- .FirstAsync(x => x.Id == created.Id);
+ Show retrieved = await context.Shows.FirstAsync(x => x.Id == created.Id);
KAssert.DeepEqual(expected, retrieved);
Assert.Single(retrieved.ExternalId);
Assert.Equal("ID", retrieved.ExternalId["test"].DataId);
diff --git a/back/tests/Kyoo.Tests/Database/TestContext.cs b/back/tests/Kyoo.Tests/Database/TestContext.cs
index 0f8b48e0..1c5bdca5 100644
--- a/back/tests/Kyoo.Tests/Database/TestContext.cs
+++ b/back/tests/Kyoo.Tests/Database/TestContext.cs
@@ -102,8 +102,8 @@ namespace Kyoo.Tests
{
string server = Environment.GetEnvironmentVariable("POSTGRES_HOST") ?? "127.0.0.1";
string port = Environment.GetEnvironmentVariable("POSTGRES_PORT") ?? "5432";
- string username = Environment.GetEnvironmentVariable("POSTGRES_USER") ?? "kyoo";
- string password = Environment.GetEnvironmentVariable("POSTGRES_PASSWORD") ?? "kyooPassword";
+ string username = Environment.GetEnvironmentVariable("POSTGRES_USER") ?? "KyooUser";
+ string password = Environment.GetEnvironmentVariable("POSTGRES_PASSWORD") ?? "KyooPassword";
return $"Server={server};Port={port};Database={database};User ID={username};Password={password};Include Error Detail=true";
}
diff --git a/back/tests/Kyoo.Tests/Utility/EnumerableTests.cs b/back/tests/Kyoo.Tests/Utility/EnumerableTests.cs
index 02184acb..80a55a6f 100644
--- a/back/tests/Kyoo.Tests/Utility/EnumerableTests.cs
+++ b/back/tests/Kyoo.Tests/Utility/EnumerableTests.cs
@@ -30,9 +30,6 @@ namespace Kyoo.Tests.Utility
{
int[] list = { 1, 2, 3, 4 };
list = list.IfEmpty(() => KAssert.Fail("Empty action should not be triggered.")).ToArray();
- Assert.Throws(() => list.IfEmpty(null!).ToList());
- list = null;
- Assert.Throws(() => list!.IfEmpty(() => { }).ToList());
list = Array.Empty();
Assert.Throws(() => list.IfEmpty(() => throw new ArgumentException()).ToList());
Assert.Empty(list.IfEmpty(() => { }));
diff --git a/back/tests/Kyoo.Tests/Utility/MergerTests.cs b/back/tests/Kyoo.Tests/Utility/MergerTests.cs
index f8610d57..4e9f3f3b 100644
--- a/back/tests/Kyoo.Tests/Utility/MergerTests.cs
+++ b/back/tests/Kyoo.Tests/Utility/MergerTests.cs
@@ -31,12 +31,12 @@ namespace Kyoo.Tests.Utility
{
Studio genre = new()
{
- Id = 5,
Name = "merged"
};
Studio genre2 = new()
{
- Name = "test"
+ Name = "test",
+ Id = 5,
};
Studio ret = Merger.Complete(genre, genre2);
Assert.True(ReferenceEquals(genre, ret));
@@ -50,11 +50,11 @@ namespace Kyoo.Tests.Utility
{
Collection collection = new()
{
- Id = 5,
Name = "merged",
};
Collection collection2 = new()
{
+ Id = 5,
Name = "test",
};
Collection ret = Merger.Complete(collection, collection2);
diff --git a/back/tests/Kyoo.Tests/Utility/UtilityTests.cs b/back/tests/Kyoo.Tests/Utility/UtilityTests.cs
index 944c6571..aea71e8e 100644
--- a/back/tests/Kyoo.Tests/Utility/UtilityTests.cs
+++ b/back/tests/Kyoo.Tests/Utility/UtilityTests.cs
@@ -47,8 +47,8 @@ namespace Kyoo.Tests.Utility
Expression> member = x => x.Id;
Expression> memberCast = x => x.Id;
- Assert.Equal("ID", KUtility.GetPropertyName(member));
- Assert.Equal("ID", KUtility.GetPropertyName(memberCast));
+ Assert.Equal("Id", KUtility.GetPropertyName(member));
+ Assert.Equal("Id", KUtility.GetPropertyName(memberCast));
}
[Fact]