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 _mockEnvironment = new Mock(); 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(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); } } }