Skip to content

Commit

Permalink
#1833 add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
qdraw committed Jan 21, 2025
1 parent 9428f5d commit ab0c223
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ public async Task DownloadPhoto_isThumbnailTrue_CreateThumb_ReturnFileStream_Tes
var selectorStorage = new FakeSelectorStorage(ArrangeStorage());
var thumbnailService = new ThumbnailService(selectorStorage, new FakeIWebLogger(),
new AppSettings(), new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(),
new FakeIVideoProcess(selectorStorage),
new FileHashSubPathStorage(selectorStorage, new FakeIWebLogger()));

// Act
Expand All @@ -176,7 +176,7 @@ public async Task DownloadPhoto_WrongInputNotFound()
var selectorStorage = new FakeSelectorStorage(ArrangeStorage());
var thumbnailService = new ThumbnailService(selectorStorage, new FakeIWebLogger(),
new AppSettings(), new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(),
new FakeIVideoProcess(selectorStorage),
new FileHashSubPathStorage(selectorStorage, new FakeIWebLogger()));

// Act
Expand Down Expand Up @@ -283,7 +283,7 @@ public async Task DownloadPhoto_isThumbnailTrue_ReturnAThumb_ReturnFileStream_Te
var selectorStorage = new FakeSelectorStorage(ArrangeStorage());
var thumbnailService = new ThumbnailService(selectorStorage, new FakeIWebLogger(),
new AppSettings(), new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(),
new FakeIVideoProcess(selectorStorage),
new FileHashSubPathStorage(selectorStorage, new FakeIWebLogger()));

// Act
Expand Down
6 changes: 4 additions & 2 deletions starsky/starskytest/Controllers/ThumbnailControllerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,8 @@ public async Task Thumbnail_HappyFlowDisplayJson_API_Test()
// Create thumbnail in fake storage
var service = new ThumbnailService(new FakeSelectorStorage(storage),
new FakeIWebLogger(), new AppSettings(),
new FakeIUpdateStatusGeneratedThumbnailService(), new FakeIVideoProcess(),
new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(new FakeSelectorStorage(storage)),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));

await service.GenerateThumbnail(createAnImage.FilePath!, createAnImage.FileHash!);
Expand Down Expand Up @@ -187,7 +188,8 @@ public async Task Thumbnail_HappyFlowFileStreamResult_API_Test()
// Create thumbnail in fake storage
var thumbnailService = new ThumbnailService(new FakeSelectorStorage(storage),
new FakeIWebLogger(), new AppSettings(),
new FakeIUpdateStatusGeneratedThumbnailService(), new FakeIVideoProcess(),
new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(new FakeSelectorStorage(storage)),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));

await thumbnailService.GenerateThumbnail(createAnImage.FilePath!, createAnImage.FileHash!);
Expand Down
25 changes: 22 additions & 3 deletions starsky/starskytest/FakeMocks/FakeIVideoProcess.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,33 @@
using System;
using System.IO;
using System.Threading.Tasks;
using starsky.foundation.platform.Enums;
using starsky.foundation.platform.Thumbnails;
using starsky.foundation.storage.Interfaces;
using starsky.foundation.storage.Storage;
using starsky.foundation.video.Process;
using starsky.foundation.video.Process.Interfaces;
using starskytest.FakeCreateAn;

namespace starskytest.FakeMocks;

public class FakeIVideoProcess : IVideoProcess
public class FakeIVideoProcess(ISelectorStorage selectorStorage) : IVideoProcess
{
public Task<VideoResult> RunVideo(string subPath, string? beforeFileHash,
private readonly IStorage _thumbnailStorage =
selectorStorage.Get(SelectorStorage.StorageServices.Thumbnail);

public async Task<VideoResult> RunVideo(string subPath, string? beforeFileHash,
VideoProcessTypes type)
{
return Task.FromResult(new VideoResult(true));
ArgumentNullException.ThrowIfNull(beforeFileHash);

var thumbnailName = ThumbnailNameHelper.Combine(beforeFileHash, ThumbnailSize.ExtraLarge,
ThumbnailImageFormat.jpg);

await _thumbnailStorage.WriteStreamAsync(new MemoryStream([.. CreateAnImage.Bytes]),
thumbnailName
);

return new VideoResult(true, thumbnailName, "Mocked");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ public sealed class ToBase64DataUriListTest
[TestMethod]
public async Task TestIfContainsDataImageBaseHash()
{
var fakeStorage = new FakeIStorage(new List<string> { "/" },
new List<string> { "/test.jpg" }, new List<byte[]> { CreateAnImage.Bytes.ToArray() });
var fakeStorage = new FakeIStorage(["/"],
["/test.jpg"], new List<byte[]> { CreateAnImage.Bytes.ToArray() });
var thumbnailService = new ThumbnailService(new FakeSelectorStorage(fakeStorage),
new FakeIWebLogger(), new AppSettings(),
new FakeIUpdateStatusGeneratedThumbnailService(), new FakeIVideoProcess(),
new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(new FakeSelectorStorage(fakeStorage)),
new FileHashSubPathStorage(new FakeSelectorStorage(fakeStorage), new FakeIWebLogger()));

var result = await new ToBase64DataUriList(thumbnailService)
Expand All @@ -40,7 +41,8 @@ public async Task TestIfContainsDataImageBaseHash_CorruptOutput()
new List<byte[]> { new CreateAnImageCorrupt().Bytes.ToArray() });
var thumbnailService = new ThumbnailService(new FakeSelectorStorage(fakeStorage),
new FakeIWebLogger(), new AppSettings(),
new FakeIUpdateStatusGeneratedThumbnailService(), new FakeIVideoProcess(),
new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(new FakeSelectorStorage(fakeStorage)),
new FileHashSubPathStorage(new FakeSelectorStorage(fakeStorage), new FakeIWebLogger()));

var result = await new ToBase64DataUriList(thumbnailService)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ private static ThumbnailService SetThumbnailService(IStorage storage)
{
return new ThumbnailService(new FakeSelectorStorage(storage),
new FakeIWebLogger(), new AppSettings(),
new FakeIUpdateStatusGeneratedThumbnailService(), new FakeIVideoProcess(),
new FakeIUpdateStatusGeneratedThumbnailService(),
new FakeIVideoProcess(new FakeSelectorStorage(storage)),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
using starsky.foundation.thumbnailgeneration.Interfaces;
using starsky.foundation.thumbnailgeneration.Services;
using starskytest.FakeCreateAn;
using starskytest.FakeCreateAn.CreateAnQuickTimeMp4;
using starskytest.FakeMocks;

namespace starskytest.starsky.foundation.thumbnailgeneration.GenerationFactory;
Expand All @@ -22,6 +23,7 @@ public sealed class ThumbnailServiceTests
{
private readonly AppSettings _appSettings;
private readonly string _fakeIStorageImageSubPath;
private readonly string _fakeIStorageImageSubPathVideo;

private readonly IUpdateStatusGeneratedThumbnailService
_fakeIUpdateStatusGeneratedThumbnailService;
Expand All @@ -33,10 +35,14 @@ private readonly IUpdateStatusGeneratedThumbnailService
public ThumbnailServiceTests()
{
_fakeIStorageImageSubPath = "/test.jpg";

var iStorage = new FakeIStorage(new List<string> { "/" },
new List<string> { _fakeIStorageImageSubPath },
new List<byte[]> { CreateAnImage.Bytes.ToArray() });
_fakeIStorageImageSubPathVideo = "/test.mp4";

var iStorage = new FakeIStorage(["/"],
[_fakeIStorageImageSubPath, _fakeIStorageImageSubPathVideo],
new List<byte[]>
{
CreateAnImage.Bytes.ToArray(), CreateAnQuickTimeMp4.Bytes.ToArray()
});
_selectorStorage = new FakeSelectorStorage(iStorage);
_appSettings = new AppSettings();
_fakeIUpdateStatusGeneratedThumbnailService =
Expand All @@ -49,7 +55,8 @@ public async Task CreateThumbTest_FileHash_FileHashNull()
{
// Arrange
var sut = new ThumbnailService(_selectorStorage, new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(), new FakeIWebLogger()));

// Act & Assert
Expand All @@ -62,7 +69,8 @@ public async Task CreateThumbTest_FileHash_FileHashNull()
public async Task CreateThumbTest_FileHash_ImageSubPathNotFound()
{
var sut = new ThumbnailService(_selectorStorage, new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(), new FakeIWebLogger()));

var isCreated =
Expand All @@ -76,7 +84,8 @@ await sut.GenerateThumbnail(
public async Task CreateThumbTest_FileHash_WrongImageType()
{
var sut = new ThumbnailService(_selectorStorage, new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(), new FakeIWebLogger()));

var isCreated = await sut.GenerateThumbnail(
Expand All @@ -85,6 +94,21 @@ public async Task CreateThumbTest_FileHash_WrongImageType()
Assert.IsFalse(isCreated.FirstOrDefault()!.Success);
}

[TestMethod]
public async Task CreateThumbTest_FileHash_Video()
{
var sut = new ThumbnailService(_selectorStorage, new FakeIWebLogger(),
_appSettings, new UpdateStatusGeneratedThumbnailService(new FakeIThumbnailQuery()),
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(_selectorStorage, new FakeIWebLogger()));

var isCreated = await sut.GenerateThumbnail(
_fakeIStorageImageSubPathVideo);

Assert.IsTrue(isCreated[0].Success);
Assert.IsTrue(isCreated[1].Success);
Assert.IsTrue(isCreated[2].Success);
}

[TestMethod]
[DataRow(true)]
Expand All @@ -97,7 +121,8 @@ public async Task CreateThumbTest_FileHash_IncludeOrSkipExtraLarge(bool includeE

const string fileHash = "test_hash";
var sut = new ThumbnailService(new FakeSelectorStorage(storage), new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));

var isCreated =
Expand Down Expand Up @@ -136,7 +161,8 @@ await storage.WriteStreamAsync(
ThumbnailNameHelper.Combine(hash, ThumbnailSize.Small, _imageFormat));

var sut = new ThumbnailService(new FakeSelectorStorage(storage), new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));

var isCreated =
Expand All @@ -153,7 +179,8 @@ public async Task CreateThumbTest_1arg_Folder()
new List<byte[]> { CreateAnImage.Bytes.ToArray() });

var sut = new ThumbnailService(new FakeSelectorStorage(storage), new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));

var isCreated = await sut.GenerateThumbnail("/");
Expand All @@ -169,7 +196,8 @@ public async Task CreateThumbTest_NullFail()
new List<byte[]?> { null });

var sut = new ThumbnailService(new FakeSelectorStorage(storage), new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));

var isCreated = await sut.GenerateThumbnail("/test/test.jpg");
Expand All @@ -181,7 +209,8 @@ public async Task CreateThumbTest_NullFail()
public async Task RotateThumbnail_NotFound()
{
var sut = new ThumbnailService(new FakeSelectorStorage(), new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(), new FakeIWebLogger()));

var result = await sut.RotateThumbnail("not-found", 0, 3);
Expand All @@ -198,7 +227,8 @@ public async Task RotateThumbnail_Rotate()
new List<byte[]> { CreateAnImage.Bytes.ToArray() });

var sut = new ThumbnailService(new FakeSelectorStorage(storage), new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));
var result = await sut.RotateThumbnail("/test.jpg", -1, 3);

Expand All @@ -214,7 +244,8 @@ public async Task RotateThumbnail_Corrupt()
new List<byte[]> { Array.Empty<byte>() });

var sut = new ThumbnailService(new FakeSelectorStorage(storage), new FakeIWebLogger(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService, new FakeIVideoProcess(),
_appSettings, _fakeIUpdateStatusGeneratedThumbnailService,
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(storage), new FakeIWebLogger()));

var result = await sut.RotateThumbnail("/test.jpg", -1, 3);
Expand All @@ -228,7 +259,7 @@ public async Task NotFound()
var sut = new ThumbnailService(new FakeSelectorStorage(),
new FakeIWebLogger(), new AppSettings(),
new UpdateStatusGeneratedThumbnailService(new FakeIThumbnailQuery()),
new FakeIVideoProcess(),
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(), new FakeIWebLogger()));
var resultModels = await sut.GenerateThumbnail("/not-found");

Expand All @@ -241,7 +272,7 @@ public async Task NotFound2()
var sut = new ThumbnailService(new FakeSelectorStorage(),
new FakeIWebLogger(), new AppSettings(),
new UpdateStatusGeneratedThumbnailService(new FakeIThumbnailQuery()),
new FakeIVideoProcess(),
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(), new FakeIWebLogger()));
var (stream, resultModels) = await sut.GenerateThumbnail("/not-found",
"hash", ThumbnailImageFormat.unknown, ThumbnailSize.Large);
Expand All @@ -260,27 +291,27 @@ public async Task GenerateThumbnail_NotFound()
var sut = new ThumbnailService(storage,
new FakeIWebLogger(), new AppSettings(),
new UpdateStatusGeneratedThumbnailService(new FakeIThumbnailQuery()),
new FakeIVideoProcess(), hashService);
new FakeIVideoProcess(_selectorStorage), hashService);

var (stream, resultModels) = await sut.GenerateThumbnail("/test.jpg",
"hash", ThumbnailImageFormat.jpg, ThumbnailSize.Large);

Assert.IsNull(stream);
Assert.IsFalse(resultModels.Success);
}

[TestMethod]
public async Task GenerateThumbnail_InvalidFileHash()
{
var storage = new FakeSelectorStorage(new FakeIStorage([],
["/test.jpg"], [[.. CreateAnImage.Bytes]]));

var hashService = new FakeIFileHashSubPathStorage([( "/test.jpg", "hash", false )]);

var sut = new ThumbnailService(storage,
new FakeIWebLogger(), new AppSettings(),
new UpdateStatusGeneratedThumbnailService(new FakeIThumbnailQuery()),
new FakeIVideoProcess(), hashService);
new FakeIVideoProcess(_selectorStorage), hashService);

var (stream, resultModels) = await sut.GenerateThumbnail("/test.jpg",
"hash", ThumbnailImageFormat.jpg, ThumbnailSize.Large);
Expand All @@ -296,7 +327,7 @@ public async Task NotFoundNonExistingHash()
var sut = new ThumbnailService(new FakeSelectorStorage(),
new FakeIWebLogger(), new AppSettings(),
new UpdateStatusGeneratedThumbnailService(new FakeIThumbnailQuery()),
new FakeIVideoProcess(),
new FakeIVideoProcess(_selectorStorage),
new FileHashSubPathStorage(new FakeSelectorStorage(), new FakeIWebLogger()));
var result = await sut.GenerateThumbnail("/not-found", "non-existing-hash");
Assert.IsFalse(result.FirstOrDefault()!.Success);
Expand Down

0 comments on commit ab0c223

Please sign in to comment.