diff options
| author | JPVenson <github@jpb.email> | 2024-10-10 00:49:06 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2024-10-10 00:49:06 +0000 |
| commit | 7f03f39bcccca208a83fb6b2144b80e11d1d40ac (patch) | |
| tree | 118ff8614192a9a2bab4099e94e3b0aa26818a7c | |
| parent | 7a5c7e70f66d3f68619c27474d7db26f83df9565 (diff) | |
Fixed tests
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | 89 | ||||
| -rw-r--r-- | tests/Jellyfin.Server.Integration.Tests/Controllers/LibraryStructureControllerTests.cs | 14 |
2 files changed, 56 insertions, 47 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index d42581ef4..d82de097c 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -930,19 +930,19 @@ public sealed class BaseItemRepository(IDbContextFactory<JellyfinDbContext> dbPr if (filter.HasDeadParentId.HasValue && filter.HasDeadParentId.Value) { baseQuery = baseQuery - .Where(e => e.ParentId.HasValue && context.BaseItems.Any(f => f.Id == e.ParentId.Value)); + .Where(e => e.ParentId.HasValue && !context.BaseItems.Any(f => f.Id == e.ParentId.Value)); } if (filter.IsDeadArtist.HasValue && filter.IsDeadArtist.Value) { baseQuery = baseQuery - .Where(e => e.ItemValues!.Any(f => (f.Type == 0 || f.Type == ItemValueType.AlbumArtist) && f.CleanValue == e.CleanName)); + .Where(e => !e.ItemValues!.Any(f => (f.Type == ItemValueType.Artist || f.Type == ItemValueType.AlbumArtist) && f.CleanValue == e.CleanName)); } if (filter.IsDeadStudio.HasValue && filter.IsDeadStudio.Value) { baseQuery = baseQuery - .Where(e => e.ItemValues!.Any(f => f.Type == ItemValueType.Studios && f.CleanValue == e.CleanName)); + .Where(e => !e.ItemValues!.Any(f => f.Type == ItemValueType.Studios && f.CleanValue == e.CleanName)); } if (filter.IsDeadPerson.HasValue && filter.IsDeadPerson.Value) @@ -1252,53 +1252,61 @@ public sealed class BaseItemRepository(IDbContextFactory<JellyfinDbContext> dbPr tuples[i] = (item, ancestorIds, topParent, userdataKey, inheritedTags); } - using var context = dbProvider.CreateDbContext(); - using var transaction = context.Database.BeginTransaction(); - foreach (var item in tuples) + try { - var entity = Map(item.Item); - if (!context.BaseItems.Any(e => e.Id == entity.Id)) + using var context = dbProvider.CreateDbContext(); + using var transaction = context.Database.BeginTransaction(); + foreach (var item in tuples) { - context.BaseItems.Add(entity); - } - else - { - context.BaseItems.Attach(entity).State = EntityState.Modified; - } + var entity = Map(item.Item); + if (!context.BaseItems.Any(e => e.Id == entity.Id)) + { + context.BaseItems.Add(entity); + } + else + { + context.BaseItems.Attach(entity).State = EntityState.Modified; + } - context.AncestorIds.Where(e => e.ItemId == entity.Id).ExecuteDelete(); - if (item.Item.SupportsAncestors && item.AncestorIds != null) - { - entity.AncestorIds = new List<AncestorId>(); - foreach (var ancestorId in item.AncestorIds) + context.AncestorIds.Where(e => e.ItemId == entity.Id).ExecuteDelete(); + if (item.Item.SupportsAncestors && item.AncestorIds != null) { - entity.AncestorIds.Add(new AncestorId() + entity.AncestorIds = new List<AncestorId>(); + foreach (var ancestorId in item.AncestorIds) { - ParentItemId = ancestorId, - ItemId = entity.Id - }); + entity.AncestorIds.Add(new AncestorId() + { + ParentItemId = ancestorId, + ItemId = entity.Id + }); + } } - } - var itemValues = GetItemValuesToSave(item.Item, item.InheritedTags); - context.ItemValues.Where(e => e.ItemId == entity.Id).ExecuteDelete(); - entity.ItemValues = new List<ItemValue>(); + var itemValues = GetItemValuesToSave(item.Item, item.InheritedTags); + context.ItemValues.Where(e => e.ItemId == entity.Id).ExecuteDelete(); + entity.ItemValues = new List<ItemValue>(); - foreach (var itemValue in itemValues) - { - entity.ItemValues.Add(new() + foreach (var itemValue in itemValues) { - Item = entity, - Type = (ItemValueType)itemValue.MagicNumber, - Value = itemValue.Value, - CleanValue = GetCleanValue(itemValue.Value), - ItemId = entity.Id - }); + entity.ItemValues.Add(new() + { + Item = entity, + Type = (ItemValueType)itemValue.MagicNumber, + Value = itemValue.Value, + CleanValue = GetCleanValue(itemValue.Value), + ItemId = entity.Id + }); + } } - } - context.SaveChanges(); - transaction.Commit(); + context.SaveChanges(); + transaction.Commit(); + } + catch (System.Exception) + { + System.Console.WriteLine(); + throw; + } } /// <inheritdoc cref="IItemRepository" /> @@ -1484,7 +1492,8 @@ public sealed class BaseItemRepository(IDbContextFactory<JellyfinDbContext> dbPr Type = dto.GetType().ToString(), Id = dto.Id }; - entity.ParentId = dto.ParentId; + + entity.ParentId = !dto.ParentId.IsEmpty() ? dto.ParentId : null; entity.Path = GetPathToSave(dto.Path); entity.EndDate = dto.EndDate.GetValueOrDefault(); entity.CommunityRating = dto.CommunityRating; diff --git a/tests/Jellyfin.Server.Integration.Tests/Controllers/LibraryStructureControllerTests.cs b/tests/Jellyfin.Server.Integration.Tests/Controllers/LibraryStructureControllerTests.cs index 02a77516f..190621085 100644 --- a/tests/Jellyfin.Server.Integration.Tests/Controllers/LibraryStructureControllerTests.cs +++ b/tests/Jellyfin.Server.Integration.Tests/Controllers/LibraryStructureControllerTests.cs @@ -13,7 +13,7 @@ using Xunit.Priority; namespace Jellyfin.Server.Integration.Tests.Controllers; -// [TestCaseOrderer(PriorityOrderer.Name, PriorityOrderer.Assembly)] +[TestCaseOrderer(PriorityOrderer.Name, PriorityOrderer.Assembly)] public sealed class LibraryStructureControllerTests : IClassFixture<JellyfinApplicationFactory> { private readonly JellyfinApplicationFactory _factory; @@ -62,13 +62,13 @@ public sealed class LibraryStructureControllerTests : IClassFixture<JellyfinAppl } [Fact] - [Priority(-2)] + [Priority(0)] public async Task UpdateLibraryOptions_Valid_Success() { var client = _factory.CreateClient(); client.DefaultRequestHeaders.AddAuthHeader(_accessToken ??= await AuthHelper.CompleteStartupAsync(client)); - var createBody = new AddVirtualFolderDto() + var createbody = new AddVirtualFolderDto() { LibraryOptions = new LibraryOptions() { @@ -76,8 +76,8 @@ public sealed class LibraryStructureControllerTests : IClassFixture<JellyfinAppl } }; - using var createResponse = await client.PostAsJsonAsync("Library/VirtualFolders?name=test&refreshLibrary=true", createBody, _jsonOptions); - Assert.Equal(HttpStatusCode.NoContent, createResponse.StatusCode); + using var createresponse = await client.PostAsJsonAsync("Library/VirtualFolders?name=test&refreshLibrary=true", createbody, _jsonOptions); + Assert.Equal(HttpStatusCode.NoContent, createresponse.StatusCode); using var response = await client.GetAsync("Library/VirtualFolders"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); @@ -91,13 +91,13 @@ public sealed class LibraryStructureControllerTests : IClassFixture<JellyfinAppl Assert.False(options.Enabled); options.Enabled = true; - var existBody = new UpdateLibraryOptionsDto() + var body = new UpdateLibraryOptionsDto() { Id = Guid.Parse(library.ItemId), LibraryOptions = options }; - using var response2 = await client.PostAsJsonAsync("Library/VirtualFolders/LibraryOptions", existBody, _jsonOptions); + using var response2 = await client.PostAsJsonAsync("Library/VirtualFolders/LibraryOptions", body, _jsonOptions); Assert.Equal(HttpStatusCode.NoContent, response2.StatusCode); } |
