using System; using System.Threading.Tasks; using LCU.API.Internal.Operations.IncentiveApi.DataAccess; using LCU.API.Internal.Operations.IncentiveApi.Services.MicroApiServices; using LCU.Library.Internal.Exceptions; using Moq; using NUnit.Framework; namespace Application.UnitTests.Services.MicroApiServices { public class FileOperationsApiServiceTest { private FileOperationsApiService _fileOperationsApiService; private Mock _mockFileOperationsDao; [SetUp] public void Setup() { _mockFileOperationsDao = new Mock(); _fileOperationsApiService = new FileOperationsApiService(_mockFileOperationsDao.Object); } [Test] public async Task GetFileContent_ValidRequest_Success() { _mockFileOperationsDao.Setup(s => s.GetFileContent("filePath")).ReturnsAsync("fileContent"); var fileContent = await _fileOperationsApiService.GetFileContent("filePath"); _mockFileOperationsDao.Verify(s => s.GetFileContent("filePath"), Times.Once()); Assert.AreEqual("fileContent", fileContent); } [Test] public void GetFileContent_DaoFails_ExceptionThrown() { _mockFileOperationsDao.Setup(s => s.GetFileContent("filePath")).ThrowsAsync(new Exception("Failure")); Assert.ThrowsAsync(async () => await _fileOperationsApiService.GetFileContent("filePath")); _mockFileOperationsDao.Verify(s => s.GetFileContent("filePath"), Times.Once()); } } }