Added a bunch of basic json files for the different structures Kavita supports. Unit tests to come.

This commit is contained in:
Joseph Milazzo 2025-05-07 19:10:54 -05:00
parent 85b3187f3f
commit 16498d4b40
16 changed files with 134 additions and 0 deletions

View file

@ -0,0 +1,54 @@
using System.IO;
using System.Threading.Tasks;
using API.Data.Repositories;
using API.Tests.Helpers;
using Hangfire;
using Xunit;
using Xunit.Abstractions;
namespace API.Tests.Services.Scanner;
/// <summary>
/// Responsible for testing Change Detection, Exclude Patterns,
/// </summary>
public class FileSystemParserTests : AbstractDbTest
{
private readonly ITestOutputHelper _testOutputHelper;
private readonly ScannerHelper _scannerHelper;
private readonly string _testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ScannerService/ScanTests");
public FileSystemParserTests(ITestOutputHelper testOutputHelper)
{
_testOutputHelper = testOutputHelper;
// Set up Hangfire to use in-memory storage for testing
GlobalConfiguration.Configuration.UseInMemoryStorage();
_scannerHelper = new ScannerHelper(UnitOfWork, testOutputHelper);
}
protected override async Task ResetDb()
{
Context.Library.RemoveRange(Context.Library);
await Context.SaveChangesAsync();
}
#region Validate Change Detection
[Fact]
public async Task ScanLibrary_ComicVine_PublisherFolder()
{
var testcase = "Publisher - ComicVine.json";
var library = await _scannerHelper.GenerateScannerData(testcase);
var scanner = _scannerHelper.CreateServices();
await scanner.ScanLibrary(library.Id);
var postLib = await UnitOfWork.LibraryRepository.GetLibraryForIdAsync(library.Id, LibraryIncludes.Series);
Assert.NotNull(postLib);
Assert.Equal(4, postLib.Series.Count);
}
#endregion
}

View file

@ -0,0 +1,5 @@
[
"Root 1/Series A/Series A 01.cbz",
"Root 1/Series B/Series B 01.cbz",
"Root 2/Series C/Series C 01.cbz"
]

View file

@ -0,0 +1,6 @@
[
"Root 1/Series A/Series A/Series A 01.cbz",
"Root 1/Series A/Series A1/Series A1 01.cbz",
"Root 1/Series B/Series B 01.cbz",
"Root 2/Series C/Series C 01.cbz"
]

View file

@ -0,0 +1,4 @@
[
"Root 1/Books/book v1.pdf",
"Root 1/Books/book v2.pdf"
]

View file

@ -0,0 +1,5 @@
[
"Root 1/Books/Series A/ch 1/001.png",
"Root 1/Books/Series A/ch 1/002.png",
"Root 1/Books/Series A/ch 2/001.png"
]

View file

@ -0,0 +1,5 @@
[
"Root 1/Books/Series A/vol 1 ch 1/001.png",
"Root 1/Books/Series A/vol 1 ch 2/002.png",
"Root 1/Books/Series A/vol 2/001.png"
]

View file

@ -0,0 +1,5 @@
[
"Root 1/Books/Series A/vol 1/ch 1/001.png",
"Root 1/Books/Series A/vol 1/ch 2/002.png",
"Root 1/Books/Series A/vol 2/001.png"
]

View file

@ -0,0 +1,4 @@
[
"Root 1/Books/Series A [Digital]/001.png",
"Root 1/Books/Series A [Digital]/002.png"
]

View file

@ -0,0 +1,5 @@
[
"Root 1/Books/Series A/vol 1/001.png",
"Root 1/Books/Series A/vol 1/002.png",
"Root 1/Books/Series A/vol 2/001.png"
]

View file

@ -0,0 +1,5 @@
[
"Root 1/Genre/Series A 01.cbz",
"Root 1/Genre/Series B 01.cbz",
"Root 1/Genre/Series C 01.cbz"
]

View file

@ -0,0 +1,6 @@
[
"Root 1/Publisher 1/Series A/Series A #1.cbz",
"Root 1/Publisher 1/Series B/Series B #1.cbz",
"Root 1/Publisher 2/Series C/Series C #1.cbz",
"Root 1/Publisher 2/Series D/Series D #1.cbz"
]

View file

@ -0,0 +1,6 @@
[
"Root 1/Series A/Series A 01.cbz",
"Root 1/Series A/Series A 02.cbz",
"Root 1/Series A/Specials/Series A - Title.cbz",
"Root 1/Series A/Specials/Title Two.cbz"
]

View file

@ -0,0 +1,6 @@
[
"Root 1/Series A/Series A 01.cbz",
"Root 1/Series A/Series A 02.cbz",
"Root 1/Series A/Series A - Title SP01.cbz",
"Root 1/Series A/Series A - Title SP02.cbz"
]

View file

@ -0,0 +1,6 @@
[
"Root 1/Series A/Series A 01.cbz",
"Root 1/Series B/Series B 01.cbz",
"Root 1/Series B/Series B 02.cbz",
"Root 2/Series C/Series C 01.cbz"
]

View file

@ -0,0 +1,6 @@
[
"Root 1/Series A/Series A 01.cbz",
"Root 1/Series B/Series B 01.cbz",
"Root 1/Series B/Ignore/Series B 02.cbz",
"Root 2/Ignore/Series C/Series C 01.cbz"
]

View file

@ -0,0 +1,6 @@
[
"Root 1/Series A/Series A 01.cbz",
"Root 1/Series B/Series B 01.cbz",
"Root 1/Series B/Ignore/Series B 02.cbz",
"Root 2/Series C/Series C 01.cbz"
]