48 lines
1.4 KiB
C#
48 lines
1.4 KiB
C#
using Infrastructure.FileSystem;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using System.IO;
|
|
using Xunit;
|
|
using Moq;
|
|
|
|
namespace IntegrationTests.Infrastructure.File
|
|
{
|
|
public class LocalFileImageServiceGetImageBytesById
|
|
{
|
|
private byte[] _testBytes = new byte[] { 0x01, 0x02, 0x03 };
|
|
private readonly Mock<IHostingEnvironment> _mockEnvironment = new Mock<IHostingEnvironment>();
|
|
private int _testImageId = 123;
|
|
private string _testFileName = "123.png";
|
|
|
|
public LocalFileImageServiceGetImageBytesById()
|
|
{
|
|
// create folder if necessary
|
|
Directory.CreateDirectory(Path.Combine(GetFileDirectory(), "Pics"));
|
|
|
|
string filePath = GetFilePath(_testFileName);
|
|
System.IO.File.WriteAllBytes(filePath, _testBytes);
|
|
_mockEnvironment.SetupGet<string>(m => m.ContentRootPath).Returns(GetFileDirectory());
|
|
}
|
|
|
|
private string GetFilePath(string fileName)
|
|
{
|
|
return Path.Combine(GetFileDirectory(), "Pics", fileName);
|
|
}
|
|
|
|
private string GetFileDirectory()
|
|
{
|
|
var location = System.Reflection.Assembly.GetEntryAssembly().Location;
|
|
return Path.GetDirectoryName(location);
|
|
}
|
|
|
|
[Fact]
|
|
public void ReturnsFileContentResultGivenValidId()
|
|
{
|
|
var fileService = new LocalFileImageService(_mockEnvironment.Object);
|
|
|
|
var result = fileService.GetImageBytesById(_testImageId);
|
|
|
|
Assert.Equal(_testBytes, result);
|
|
}
|
|
}
|
|
}
|