Refactored archive code into a service so that I can write tests for it.

This commit is contained in:
Joseph Milazzo 2021-01-26 09:55:15 -06:00
parent 07fd959b22
commit 6b76c8b211
22 changed files with 146 additions and 49 deletions

View file

@ -25,7 +25,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Services\Test Data" />
<Folder Include="Services\Test Data\ArchiveService" />
</ItemGroup>
</Project>

View file

@ -109,6 +109,7 @@ namespace API.Tests
[InlineData("Yumekui-Merry_DKThias_Chapter21.zip", "21")]
[InlineData("Yumekui_Merry_v01_c01[Bakayarou-Kuu].rar", "1")]
[InlineData("Yumekui-Merry_DKThias_Chapter11v2.zip", "11")]
[InlineData("Beelzebub_53[KSH].zip", "53")]
//[InlineData("[Tempus Edax Rerum] Epigraph of the Closed Curve - Chapter 6.zip", "6")]
public void ParseChaptersTest(string filename, string expected)
{

View file

@ -0,0 +1,37 @@
using System.IO;
using System.IO.Compression;
using API.Extensions;
using API.Interfaces;
using API.Services;
using Microsoft.Extensions.Logging;
using NSubstitute;
using Xunit;
namespace API.Tests.Services
{
public class ArchiveServiceTests
{
private readonly IArchiveService _archiveService;
private readonly ILogger<ArchiveService> _logger = Substitute.For<ILogger<ArchiveService>>();
private readonly string _testDirectory =
Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ArchiveService");
public ArchiveServiceTests()
{
_archiveService = new ArchiveService(_logger);
}
[Theory]
[InlineData("flat file.zip", false)]
[InlineData("file in folder in folder.zip", true)]
[InlineData("file in folder.zip", true)]
[InlineData("file in folder_alt.zip", true)]
public void ArchiveNeedsFlatteningTest(string archivePath, bool expected)
{
var file = Path.Join(_testDirectory, archivePath);
using ZipArchive archive = ZipFile.OpenRead(file);
Assert.Equal(expected, _archiveService.ArchiveNeedsFlattening(archive));
}
}
}

View file

@ -12,6 +12,7 @@ namespace API.Tests.Services
private readonly ScannerService _scannerService;
private readonly ILogger<ScannerService> _logger = Substitute.For<ILogger<ScannerService>>();
private readonly IUnitOfWork _unitOfWork = Substitute.For<IUnitOfWork>();
private readonly string _testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ScannerService");
public ScannerServiceTests()
{
_scannerService = new ScannerService(_unitOfWork, _logger);
@ -23,9 +24,8 @@ namespace API.Tests.Services
[InlineData("v10 - nested folder.cbz", "v10 - nested folder.expected.jpg")]
public void GetCoverImageTest(string inputFile, string expectedOutputFile)
{
var testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ImageProvider");
var expectedBytes = File.ReadAllBytes(Path.Join(testDirectory, expectedOutputFile));
Assert.Equal(expectedBytes, _scannerService.GetCoverImage(Path.Join(testDirectory, inputFile)));
var expectedBytes = File.ReadAllBytes(Path.Join(_testDirectory, expectedOutputFile));
Assert.Equal(expectedBytes, _scannerService.GetCoverImage(Path.Join(_testDirectory, inputFile)));
}
}
}

View file

@ -0,0 +1,2 @@
Files in this test are all royalty free and can be found here:
https://www.pexels.com/photo/snow-wood-light-art-6551949/

View file

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 395 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 385 KiB

After

Width:  |  Height:  |  Size: 385 KiB

Before After
Before After