Browse Source

Deterministic tests my ***

JPVenson 8 months ago
parent
commit
aea255f910

+ 8 - 1
Jellyfin.Api/Controllers/LibraryStructureController.cs

@@ -88,7 +88,14 @@ public class LibraryStructureController : BaseJellyfinApiController
             libraryOptions.PathInfos = Array.ConvertAll(paths, i => new MediaPathInfo(i));
         }
 
-        await _libraryManager.AddVirtualFolder(name, collectionType, libraryOptions, refreshLibrary).ConfigureAwait(false);
+        try
+        {
+            await _libraryManager.AddVirtualFolder(name, collectionType, libraryOptions, refreshLibrary).ConfigureAwait(false);
+        }
+        catch (System.Exception ex)
+        {
+            return BadRequest(ex.ToString());
+        }
 
         return NoContent();
     }

+ 2 - 2
Jellyfin.Server.Implementations/Item/BaseItemRepository.cs

@@ -83,7 +83,7 @@ public sealed class BaseItemRepository(
         context.Peoples.Where(e => e.BaseItems!.Count == 0).ExecuteDelete();
         context.Chapters.Where(e => e.ItemId == id).ExecuteDelete();
         context.MediaStreamInfos.Where(e => e.ItemId == id).ExecuteDelete();
-        context.AncestorIds.Where(e => e.ItemId == id).ExecuteDelete();
+        context.AncestorIds.Where(e => e.ItemId == id || e.ParentItemId == id).ExecuteDelete();
         context.ItemValuesMap.Where(e => e.ItemId == id).ExecuteDelete();
         context.ItemValues.Where(e => e.BaseItemsMap!.Count == 0).ExecuteDelete();
         context.BaseItemImageInfos.Where(e => e.ItemId == id).ExecuteDelete();
@@ -1292,7 +1292,7 @@ public sealed class BaseItemRepository(
                 {
                     if (!context.BaseItems.Any(f => f.Id == ancestorId))
                     {
-                        throw new InvalidOperationException($"Cannot link non-existent parent: {ancestorId}");
+                        continue;
                     }
 
                     context.AncestorIds.Add(new AncestorId()

+ 1 - 1
tests/Jellyfin.Server.Integration.Tests/Controllers/LibraryStructureControllerTests.cs

@@ -77,7 +77,7 @@ 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);
+        Assert.True(createResponse.StatusCode == HttpStatusCode.NoContent, $"Error: {await createResponse.Content.ReadAsStringAsync()}");
 
         using var response = await client.GetAsync("Library/VirtualFolders");
         Assert.Equal(HttpStatusCode.OK, response.StatusCode);