A ton of random bugs and polish (#3668)
This commit is contained in:
parent
b45d92ea5c
commit
de651215f5
144 changed files with 852 additions and 848 deletions
|
|
@ -1,8 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using API.Data;
|
||||
|
|
@ -13,7 +10,6 @@ using API.Helpers.Builders;
|
|||
using API.Services;
|
||||
using AutoMapper;
|
||||
using Hangfire;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using API.Helpers.Converters;
|
||||
using Hangfire;
|
||||
using Xunit;
|
||||
|
||||
namespace API.Tests.Converters;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ using API.Extensions;
|
|||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.Services.Tasks.Scanner.Parser;
|
||||
using API.Tests.Helpers;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using API.Data;
|
||||
using API.Data.Misc;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Extensions;
|
||||
using API.Entities.Person;
|
||||
using API.Extensions.QueryExtensions;
|
||||
using API.Helpers.Builders;
|
||||
using Xunit;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ using API.Entities;
|
|||
using API.Entities.Enums;
|
||||
using API.Extensions;
|
||||
using API.Helpers.Builders;
|
||||
using API.Tests.Helpers;
|
||||
using Xunit;
|
||||
|
||||
namespace API.Tests.Extensions;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Threading;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
using System.Collections.Generic;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Extensions;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services.Tasks.Scanner;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using API.Data;
|
||||
using API.DTOs;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services.Tasks.Scanner.Parser;
|
||||
using Xunit;
|
||||
|
||||
namespace API.Tests.Helpers;
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ using NSubstitute;
|
|||
using Xunit.Abstractions;
|
||||
|
||||
namespace API.Tests.Helpers;
|
||||
#nullable enable
|
||||
|
||||
public class ScannerHelper
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using API.Data;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Extensions;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using API.Helpers;
|
||||
using API.Helpers;
|
||||
using Xunit;
|
||||
|
||||
namespace API.Tests.Helpers;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using System.IO.Abstractions.TestingHelpers;
|
||||
using API.Data.Metadata;
|
||||
using API.Entities.Enums;
|
||||
using API.Services;
|
||||
using API.Services.Tasks.Scanner.Parser;
|
||||
|
|
|
|||
|
|
@ -1,18 +1,10 @@
|
|||
using API.Entities.Enums;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace API.Tests.Parsing;
|
||||
|
||||
public class MangaParsingTests
|
||||
{
|
||||
private readonly ITestOutputHelper _testOutputHelper;
|
||||
|
||||
public MangaParsingTests(ITestOutputHelper testOutputHelper)
|
||||
{
|
||||
_testOutputHelper = testOutputHelper;
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("Killing Bites Vol. 0001 Ch. 0001 - Galactica Scanlations (gb)", "1")]
|
||||
[InlineData("My Girlfriend Is Shobitch v01 - ch. 09 - pg. 008.png", "1")]
|
||||
|
|
@ -84,6 +76,7 @@ public class MangaParsingTests
|
|||
[InlineData("Accel World Chapter 001 Volume 002", "2")]
|
||||
[InlineData("Accel World Volume 2", "2")]
|
||||
[InlineData("Nagasarete Airantou - Vol. 30 Ch. 187.5 - Vol.31 Omake", "30")]
|
||||
[InlineData("Zom 100 - Bucket List of the Dead v01", "1")]
|
||||
public void ParseVolumeTest(string filename, string expected)
|
||||
{
|
||||
Assert.Equal(expected, API.Services.Tasks.Scanner.Parser.Parser.ParseVolume(filename, LibraryType.Manga));
|
||||
|
|
@ -212,6 +205,8 @@ public class MangaParsingTests
|
|||
[InlineData("不安の種\uff0b - 01", "不安の種\uff0b")]
|
||||
[InlineData("Giant Ojou-sama - Ch. 33.5 - Volume 04 Bonus Chapter", "Giant Ojou-sama")]
|
||||
[InlineData("[218565]-(C92) [BRIO (Puyocha)] Mika-nee no Tanryoku Shidou - Mika s Guide to Self-Confidence (THE IDOLM@STE", "")]
|
||||
[InlineData("Monster #8 Ch. 001", "Monster #8")]
|
||||
[InlineData("Zom 100 - Bucket List of the Dead v01", "Zom 100 - Bucket List of the Dead")]
|
||||
public void ParseSeriesTest(string filename, string expected)
|
||||
{
|
||||
Assert.Equal(expected, API.Services.Tasks.Scanner.Parser.Parser.ParseSeries(filename, LibraryType.Manga));
|
||||
|
|
@ -304,6 +299,7 @@ public class MangaParsingTests
|
|||
[InlineData("เด็กคนนี้ขอลาออกจากการเป็นเจ้าของปราสาท เล่ม 1 ตอนที่ 3", "3")]
|
||||
[InlineData("Max Level Returner ตอนที่ 5", "5")]
|
||||
[InlineData("หนึ่งความคิด นิจนิรันดร์ บทที่ 112", "112")]
|
||||
[InlineData("Monster #8 Ch. 001", "1")]
|
||||
public void ParseChaptersTest(string filename, string expected)
|
||||
{
|
||||
Assert.Equal(expected, API.Services.Tasks.Scanner.Parser.Parser.ParseChapter(filename, LibraryType.Manga));
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using Xunit;
|
||||
using static API.Services.Tasks.Scanner.Parser.Parser;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ using Microsoft.EntityFrameworkCore;
|
|||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
||||
namespace API.Tests.Repository;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ using System.Threading.Tasks;
|
|||
using API.Data;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Extensions;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ using System.Linq;
|
|||
using API.Archive;
|
||||
using API.Entities.Enums;
|
||||
using API.Services;
|
||||
using EasyCaching.Core;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NetVips;
|
||||
using NSubstitute;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,8 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.IO;
|
||||
using System.Data.Common;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using API.Data;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
using System.IO;
|
||||
using System.IO.Abstractions;
|
||||
using API.Services;
|
||||
using EasyCaching.Core;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
|
@ -92,18 +91,17 @@ public class BookServiceTests
|
|||
Assert.Equal("Georges Bizet \\(1838-1875\\)", comicInfo.Writer);
|
||||
}
|
||||
|
||||
// TODO: Get the file from microtherion
|
||||
// [Fact]
|
||||
// public void ShouldUsePdfInfoDict()
|
||||
// {
|
||||
// var testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ScannerService/Library/Books/PDFs");
|
||||
// var document = Path.Join(testDirectory, "Rollo at Work SP01.pdf");
|
||||
// var comicInfo = _bookService.GetComicInfo(document);
|
||||
// Assert.NotNull(comicInfo);
|
||||
// Assert.Equal("Rollo at Work", comicInfo.Title);
|
||||
// Assert.Equal("Jacob Abbott", comicInfo.Writer);
|
||||
// Assert.Equal(2008, comicInfo.Year);
|
||||
// }
|
||||
//[Fact]
|
||||
public void ShouldUsePdfInfoDict()
|
||||
{
|
||||
var testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ScannerService/Library/Books/PDFs");
|
||||
var document = Path.Join(testDirectory, "Rollo at Work SP01.pdf");
|
||||
var comicInfo = _bookService.GetComicInfo(document);
|
||||
Assert.NotNull(comicInfo);
|
||||
Assert.Equal("Rollo at Work", comicInfo.Title);
|
||||
Assert.Equal("Jacob Abbott", comicInfo.Writer);
|
||||
Assert.Equal(2008, comicInfo.Year);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ShouldHandleIndirectPdfObjects()
|
||||
|
|
|
|||
|
|
@ -9,12 +9,9 @@ using API.Data.Repositories;
|
|||
using API.DTOs.Reader;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Extensions;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.SignalR;
|
||||
using AutoMapper;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Data.Common;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using API.Data;
|
||||
using API.Data.Metadata;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,13 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using API.Data;
|
||||
using API.Data.Repositories;
|
||||
using API.DTOs.Filtering;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Extensions;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ using API.Services;
|
|||
using API.Services.Plus;
|
||||
using API.SignalR;
|
||||
using Kavita.Common;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using API.Constants;
|
||||
|
|
@ -12,6 +11,7 @@ using API.Entities;
|
|||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Entities.MetadataMatching;
|
||||
using API.Entities.Person;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services.Plus;
|
||||
using API.Services.Tasks.Metadata;
|
||||
|
|
@ -21,8 +21,6 @@ using Microsoft.EntityFrameworkCore;
|
|||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
using YamlDotNet.Serialization;
|
||||
|
||||
namespace API.Tests.Services;
|
||||
|
||||
|
|
@ -31,17 +29,14 @@ namespace API.Tests.Services;
|
|||
/// </summary>
|
||||
public class ExternalMetadataServiceTests : AbstractDbTest
|
||||
{
|
||||
private readonly ITestOutputHelper _testOutputHelper;
|
||||
private readonly ExternalMetadataService _externalMetadataService;
|
||||
private readonly Dictionary<string, Genre> _genreLookup = new Dictionary<string, Genre>();
|
||||
private readonly Dictionary<string, Tag> _tagLookup = new Dictionary<string, Tag>();
|
||||
private readonly Dictionary<string, Person> _personLookup = new Dictionary<string, Person>();
|
||||
|
||||
|
||||
public ExternalMetadataServiceTests(ITestOutputHelper testOutputHelper)
|
||||
public ExternalMetadataServiceTests()
|
||||
{
|
||||
_testOutputHelper = testOutputHelper;
|
||||
|
||||
// Set up Hangfire to use in-memory storage for testing
|
||||
GlobalConfiguration.Configuration.UseInMemoryStorage();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,9 @@
|
|||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using API.Entities.Enums;
|
||||
using API.Services;
|
||||
using EasyCaching.Core;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NetVips;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
using Image = NetVips.Image;
|
||||
|
||||
|
|
@ -28,6 +23,7 @@ public class ImageServiceTests
|
|||
public void GenerateBaseline()
|
||||
{
|
||||
GenerateFiles(BaselinePattern);
|
||||
Assert.True(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -38,6 +34,7 @@ public class ImageServiceTests
|
|||
{
|
||||
GenerateFiles(OutputPattern);
|
||||
GenerateHtmlFile();
|
||||
Assert.True(true);
|
||||
}
|
||||
|
||||
private void GenerateFiles(string outputExtension)
|
||||
|
|
@ -159,7 +156,7 @@ public class ImageServiceTests
|
|||
|
||||
// Step 4: Generate HTML file
|
||||
GenerateHtmlFileForColorScape();
|
||||
|
||||
Assert.True(true);
|
||||
}
|
||||
|
||||
private static void GenerateColorImage(string hexColor, string outputPath)
|
||||
|
|
|
|||
|
|
@ -1,29 +1,19 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using API.Data;
|
||||
using API.Data.Metadata;
|
||||
using API.Data.Repositories;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Extensions;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.Services.Tasks.Scanner;
|
||||
using API.Services.Tasks.Scanner.Parser;
|
||||
using API.SignalR;
|
||||
using API.Tests.Helpers;
|
||||
using AutoMapper;
|
||||
using Hangfire;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
|
@ -391,7 +381,7 @@ public class ParseScannedFilesTests : AbstractDbTest
|
|||
var executionerAndHerWayOfLife = postLib.Series.First(x => x.Name == "The Executioner and Her Way of Life");
|
||||
Assert.Equal(2, executionerAndHerWayOfLife.Volumes.Count);
|
||||
|
||||
Thread.Sleep(1100); // Ensure at least one second has passed since library scan
|
||||
await Task.Delay(1100); // Ensure at least one second has passed since library scan
|
||||
|
||||
// Add a new chapter to a volume of the series, and scan. Validate that only, and all directories of this
|
||||
// series are marked as HasChanged
|
||||
|
|
@ -440,7 +430,7 @@ public class ParseScannedFilesTests : AbstractDbTest
|
|||
var frieren = postLib.Series.First(x => x.Name == "Frieren - Beyond Journey's End");
|
||||
Assert.Equal(2, frieren.Volumes.Count);
|
||||
|
||||
Thread.Sleep(1100); // Ensure at least one second has passed since library scan
|
||||
await Task.Delay(1100); // Ensure at least one second has passed since library scan
|
||||
|
||||
// Add a volume to a series, and scan. Ensure only this series is marked as HasChanged
|
||||
var executionerCopyDir = Path.Join(Path.Join(testDirectoryPath, "YenPress"), "The Executioner and Her Way of Life");
|
||||
|
|
@ -483,7 +473,7 @@ public class ParseScannedFilesTests : AbstractDbTest
|
|||
|
||||
// Needs to be actual time as the write time is now, so if we set LastFolderChecked in the past
|
||||
// it'll always a scan as it was changed since the last scan.
|
||||
Thread.Sleep(1100); // Ensure at least one second has passed since library scan
|
||||
await Task.Delay(1100); // Ensure at least one second has passed since library scan
|
||||
|
||||
var res = await psf.ScanFiles(testDirectoryPath, true,
|
||||
await _unitOfWork.SeriesRepository.GetFolderPathMap(postLib.Id), postLib);
|
||||
|
|
|
|||
|
|
@ -1,19 +1,4 @@
|
|||
using System.IO;
|
||||
using API.Data;
|
||||
using API.Data.Metadata;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.Services.Tasks.Metadata;
|
||||
using API.Services.Tasks.Scanner;
|
||||
using API.SignalR;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
||||
namespace API.Tests.Services;
|
||||
namespace API.Tests.Services;
|
||||
|
||||
public class ProcessSeriesTests
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,25 +1,20 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Globalization;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using API.Data;
|
||||
using API.Data.Repositories;
|
||||
using API.DTOs;
|
||||
using API.DTOs.Progress;
|
||||
using API.DTOs.Reader;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Extensions;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.Services.Plus;
|
||||
using API.Services.Tasks;
|
||||
using API.SignalR;
|
||||
using API.Tests.Helpers;
|
||||
using AutoMapper;
|
||||
using Hangfire;
|
||||
using Hangfire.InMemory;
|
||||
|
|
|
|||
|
|
@ -11,15 +11,11 @@ using API.DTOs.ReadingLists;
|
|||
using API.DTOs.ReadingLists.CBL;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Extensions;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.Services.Plus;
|
||||
using API.Services.Tasks;
|
||||
using API.SignalR;
|
||||
using API.Tests.Helpers;
|
||||
using AutoMapper;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
|
|
|||
|
|
@ -1,34 +1,16 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
using API.Data;
|
||||
using API.Data.Metadata;
|
||||
using API.Data.Repositories;
|
||||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Extensions;
|
||||
using API.Helpers;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.Services.Plus;
|
||||
using API.Services.Tasks;
|
||||
using API.Services.Tasks.Metadata;
|
||||
using API.Services.Tasks.Scanner;
|
||||
using API.Services.Tasks.Scanner.Parser;
|
||||
using API.SignalR;
|
||||
using API.Tests.Helpers;
|
||||
using Hangfire;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ using API.DTOs.SeriesDetail;
|
|||
using API.Entities;
|
||||
using API.Entities.Enums;
|
||||
using API.Entities.Metadata;
|
||||
using API.Entities.Person;
|
||||
using API.Extensions;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
|
|
@ -809,6 +810,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.True(series.Metadata.Genres.Select(g1 => g1.Title).All(g2 => g2 == "New Genre".SentenceCase()));
|
||||
Assert.False(series.Metadata.GenresLocked); // GenreLocked is false unless the UI Explicitly says it should be locked
|
||||
|
|
@ -847,6 +849,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.True(series.Metadata.People.Select(g => g.Person.Name).All(personName => personName == "Existing Person"));
|
||||
Assert.False(series.Metadata.PublisherLocked); // PublisherLocked is false unless the UI Explicitly says it should be locked
|
||||
|
|
@ -887,6 +890,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.True(series.Metadata.People.Select(g => g.Person.Name).All(personName => personName == "Existing Person"));
|
||||
Assert.True(series.Metadata.PublisherLocked);
|
||||
|
|
@ -976,6 +980,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.False(series.Metadata.People.Any());
|
||||
}
|
||||
|
|
@ -1010,6 +1015,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.True(series.Metadata.Genres.Select(g => g.Title).All(g => g == "Existing Genre".SentenceCase()));
|
||||
Assert.True(series.Metadata.GenresLocked);
|
||||
|
|
@ -1039,6 +1045,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(1);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Equal(0, series.Metadata.ReleaseYear);
|
||||
Assert.False(series.Metadata.ReleaseYearLocked);
|
||||
|
|
@ -1071,6 +1078,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Contains("New Genre".SentenceCase(), series.Metadata.Genres.Select(g => g.Title));
|
||||
Assert.False(series.Metadata.GenresLocked); // Ensure the lock is not activated unless specified.
|
||||
|
|
@ -1104,6 +1112,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.DoesNotContain("Existing Genre".SentenceCase(), series.Metadata.Genres.Select(g => g.Title));
|
||||
Assert.Contains("New Genre".SentenceCase(), series.Metadata.Genres.Select(g => g.Title));
|
||||
|
|
@ -1137,6 +1146,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Empty(series.Metadata.Genres);
|
||||
}
|
||||
|
|
@ -1168,6 +1178,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Contains("New Tag".SentenceCase(), series.Metadata.Tags.Select(t => t.Title));
|
||||
}
|
||||
|
|
@ -1200,6 +1211,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.DoesNotContain("Existing Tag".SentenceCase(), series.Metadata.Tags.Select(t => t.Title));
|
||||
Assert.Contains("New Tag".SentenceCase(), series.Metadata.Tags.Select(t => t.Title));
|
||||
|
|
@ -1233,6 +1245,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Empty(series.Metadata.Tags);
|
||||
}
|
||||
|
|
@ -1363,7 +1376,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
|
||||
#endregion
|
||||
|
||||
#region SeriesRelation
|
||||
#region Series Relation
|
||||
[Fact]
|
||||
public async Task UpdateRelatedSeries_ShouldAddAllRelations()
|
||||
{
|
||||
|
|
@ -1431,6 +1444,7 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
addRelationDto.Sequels.Add(2);
|
||||
await _seriesService.UpdateRelatedSeries(addRelationDto);
|
||||
Assert.NotNull(series1);
|
||||
Assert.NotNull(series2);
|
||||
Assert.Equal(2, series1.Relations.Single(s => s.TargetSeriesId == 2).TargetSeriesId);
|
||||
Assert.Equal(1, series2.Relations.Single(s => s.TargetSeriesId == 1).TargetSeriesId);
|
||||
}
|
||||
|
|
@ -1473,8 +1487,9 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
// Remove relations
|
||||
var removeRelationDto = CreateRelationsDto(series1);
|
||||
await _seriesService.UpdateRelatedSeries(removeRelationDto);
|
||||
Assert.Empty(series1.Relations.Where(s => s.TargetSeriesId == 1));
|
||||
Assert.Empty(series1.Relations.Where(s => s.TargetSeriesId == 2));
|
||||
Assert.NotNull(series1);
|
||||
Assert.DoesNotContain(series1.Relations, s => s.TargetSeriesId == 1);
|
||||
Assert.DoesNotContain(series1.Relations, s => s.TargetSeriesId == 2);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1507,6 +1522,8 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
var addRelationDto = CreateRelationsDto(series1);
|
||||
addRelationDto.Adaptations.Add(2);
|
||||
await _seriesService.UpdateRelatedSeries(addRelationDto);
|
||||
|
||||
Assert.NotNull(series1);
|
||||
Assert.Equal(2, series1.Relations.Single(s => s.TargetSeriesId == 2).TargetSeriesId);
|
||||
|
||||
_context.Series.Remove(await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(2));
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
using API.Extensions;
|
||||
using API.Helpers.Builders;
|
||||
using API.Helpers.Builders;
|
||||
using API.Services.Plus;
|
||||
using API.Services.Tasks;
|
||||
|
||||
namespace API.Tests.Services;
|
||||
using System.Collections.Generic;
|
||||
|
|
@ -16,7 +14,6 @@ using API.Entities.Enums;
|
|||
using API.Helpers;
|
||||
using API.Services;
|
||||
using SignalR;
|
||||
using Helpers;
|
||||
using AutoMapper;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
|
|
|||
BIN
API.Tests/Services/Test Data/BookService/Rollo at Work SP01.pdf
Normal file
BIN
API.Tests/Services/Test Data/BookService/Rollo at Work SP01.pdf
Normal file
Binary file not shown.
|
|
@ -1,16 +1,11 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
using API.DTOs.Update;
|
||||
using API.Extensions;
|
||||
using API.Services;
|
||||
using API.Services.Tasks;
|
||||
using API.SignalR;
|
||||
using Flurl.Http;
|
||||
using Flurl.Http.Testing;
|
||||
using Kavita.Common.EnvironmentInfo;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Abstractions;
|
||||
using System.IO.Abstractions.TestingHelpers;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -11,10 +10,8 @@ using API.Helpers;
|
|||
using API.Helpers.Builders;
|
||||
using API.Services;
|
||||
using API.Services.Plus;
|
||||
using API.Services.Tasks;
|
||||
using API.Services.Tasks.Metadata;
|
||||
using API.SignalR;
|
||||
using API.Tests.Helpers;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NSubstitute;
|
||||
using Xunit;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue