Misc Fixes (#914)
* Fixed the book reader off by one issue with loading last page * Fixed a case where scanner would not delete a series if another series with same name but different format was added in that same scan. * Added some missing tag generation (chapter language and summary)
This commit is contained in:
parent
1557c2f528
commit
c5e5aa19d5
11 changed files with 232 additions and 110 deletions
|
@ -16,20 +16,8 @@ namespace API.Tests.Services
|
|||
|
||||
public class DirectoryServiceTests
|
||||
{
|
||||
private readonly DirectoryService _directoryService;
|
||||
private readonly ILogger<DirectoryService> _logger = Substitute.For<ILogger<DirectoryService>>();
|
||||
|
||||
public DirectoryServiceTests()
|
||||
{
|
||||
var filesystem = new MockFileSystem()
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
_directoryService = new DirectoryService(_logger, filesystem);
|
||||
}
|
||||
|
||||
|
||||
#region TraverseTreeParallelForEach
|
||||
[Fact]
|
||||
public void TraverseTreeParallelForEach_JustArchives_ShouldBe28()
|
||||
|
|
|
@ -16,6 +16,7 @@ using API.Services;
|
|||
using API.Services.Tasks;
|
||||
using API.Services.Tasks.Scanner;
|
||||
using API.SignalR;
|
||||
using API.Tests.Helpers;
|
||||
using AutoMapper;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Microsoft.Data.Sqlite;
|
||||
|
@ -30,9 +31,35 @@ namespace API.Tests.Services
|
|||
public class ScannerServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public void AddOrUpdateFileForChapter()
|
||||
public void FindSeriesNotOnDisk_Should_Remove1()
|
||||
{
|
||||
// TODO: This can be tested, it has _filesystem mocked
|
||||
var infos = new Dictionary<ParsedSeries, List<ParserInfo>>();
|
||||
|
||||
ParserInfoFactory.AddToParsedInfo(infos, new ParserInfo() {Series = "Darker than Black", Volumes = "1", Format = MangaFormat.Archive});
|
||||
//AddToParsedInfo(infos, new ParserInfo() {Series = "Darker than Black", Volumes = "1", Format = MangaFormat.Epub});
|
||||
|
||||
var existingSeries = new List<Series>
|
||||
{
|
||||
new Series()
|
||||
{
|
||||
Name = "Darker Than Black",
|
||||
LocalizedName = "Darker Than Black",
|
||||
OriginalName = "Darker Than Black",
|
||||
Volumes = new List<Volume>()
|
||||
{
|
||||
new Volume()
|
||||
{
|
||||
Number = 1,
|
||||
Name = "1"
|
||||
}
|
||||
},
|
||||
NormalizedName = API.Parser.Parser.Normalize("Darker Than Black"),
|
||||
Metadata = new SeriesMetadata(),
|
||||
Format = MangaFormat.Epub
|
||||
}
|
||||
};
|
||||
|
||||
Assert.Equal(1, ScannerService.FindSeriesNotOnDisk(existingSeries, infos).Count());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
@ -40,9 +67,9 @@ namespace API.Tests.Services
|
|||
{
|
||||
var infos = new Dictionary<ParsedSeries, List<ParserInfo>>();
|
||||
|
||||
AddToParsedInfo(infos, new ParserInfo() {Series = "Darker than Black", Format = MangaFormat.Archive});
|
||||
AddToParsedInfo(infos, new ParserInfo() {Series = "Cage of Eden", Volumes = "1", Format = MangaFormat.Archive});
|
||||
AddToParsedInfo(infos, new ParserInfo() {Series = "Cage of Eden", Volumes = "10", Format = MangaFormat.Archive});
|
||||
ParserInfoFactory.AddToParsedInfo(infos, new ParserInfo() {Series = "Darker than Black", Format = MangaFormat.Archive});
|
||||
ParserInfoFactory.AddToParsedInfo(infos, new ParserInfo() {Series = "Cage of Eden", Volumes = "1", Format = MangaFormat.Archive});
|
||||
ParserInfoFactory.AddToParsedInfo(infos, new ParserInfo() {Series = "Cage of Eden", Volumes = "10", Format = MangaFormat.Archive});
|
||||
|
||||
var existingSeries = new List<Series>
|
||||
{
|
||||
|
@ -114,48 +141,6 @@ namespace API.Tests.Services
|
|||
// Assert.Equal(missingSeries.Count, removeCount);
|
||||
// }
|
||||
|
||||
private void AddToParsedInfo(IDictionary<ParsedSeries, List<ParserInfo>> collectedSeries, ParserInfo info)
|
||||
{
|
||||
var existingKey = collectedSeries.Keys.FirstOrDefault(ps =>
|
||||
ps.Format == info.Format && ps.NormalizedName == API.Parser.Parser.Normalize(info.Series));
|
||||
existingKey ??= new ParsedSeries()
|
||||
{
|
||||
Format = info.Format,
|
||||
Name = info.Series,
|
||||
NormalizedName = API.Parser.Parser.Normalize(info.Series)
|
||||
};
|
||||
if (collectedSeries.GetType() == typeof(ConcurrentDictionary<,>))
|
||||
{
|
||||
((ConcurrentDictionary<ParsedSeries, List<ParserInfo>>) collectedSeries).AddOrUpdate(existingKey, new List<ParserInfo>() {info}, (_, oldValue) =>
|
||||
{
|
||||
oldValue ??= new List<ParserInfo>();
|
||||
if (!oldValue.Contains(info))
|
||||
{
|
||||
oldValue.Add(info);
|
||||
}
|
||||
|
||||
return oldValue;
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!collectedSeries.ContainsKey(existingKey))
|
||||
{
|
||||
collectedSeries.Add(existingKey, new List<ParserInfo>() {info});
|
||||
}
|
||||
else
|
||||
{
|
||||
var list = collectedSeries[existingKey];
|
||||
if (!list.Contains(info))
|
||||
{
|
||||
list.Add(info);
|
||||
}
|
||||
|
||||
collectedSeries[existingKey] = list;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue