using System; using System.Collections.Generic; using System.Threading.Tasks; using Moq; using Xunit; using LCU.Api.Internal.FileOperations.Services; using LCU.Library.Internal.FileOperationsModels.Models; namespace LCU.Api.Internal.FileOperationsTests.Services; public class DirectFileOperationsServiceTest { private readonly DirectFileOperationsService _directFileOperationsService; private Mock _mockFileOperationsService; public DirectFileOperationsServiceTest() { _mockFileOperationsService = new Mock(); _directFileOperationsService = new DirectFileOperationsService(_mockFileOperationsService.Object); } [Fact] public async Task HandleDirectFileOperationsRequest_Return_IsSuccessful_True() { var validRequestResponse = new RequestResponse() { MessageStack = new List(), IsSuccessful = true }; _mockFileOperationsService.Setup(service => service.PerformFileOperation(It.IsAny())).Returns(validRequestResponse); var request = new MoveFileRequest() { SourcePath = "", SourceFile = "", DestinationPath = "" }; // act var result = await _directFileOperationsService.HandleDirectFileOperationsRequest(request, FileOperationType.Move); Assert.NotNull(result); Assert.True(validRequestResponse.IsSuccessful); _mockFileOperationsService.Verify(service => service.PerformFileOperation(It.IsAny()), Times.Once); } [Fact] public async Task HandleDirectFileOperationsRequest_Return_IsSuccessful_False() { var validRequestResponse = new RequestResponse() { MessageStack = new List { "test" }, IsSuccessful = false }; _mockFileOperationsService.Setup(service => service.PerformFileOperation(It.IsAny())).Returns(validRequestResponse); var request = new MoveFileRequest() { SourcePath = "", SourceFile = "", DestinationPath = "" }; // act var result = await _directFileOperationsService.HandleDirectFileOperationsRequest(request, FileOperationType.Move); Assert.NotNull(result); Assert.False(result.IsSuccessful); Assert.Single(result.MessageStack); _mockFileOperationsService.Verify(service => service.PerformFileOperation(It.IsAny()), Times.Once); } [Fact] public void HandleDirectFileOperationsRequest_PerformFileOperation_ThrowsException() { var validRequestResponse = new RequestResponse() { MessageStack = new List(), IsSuccessful = true }; _mockFileOperationsService.Setup(service => service.PerformFileOperation(It.IsAny())).Throws(new Exception("Test")); var request = new MoveFileRequest() { SourcePath = "", SourceFile = "", DestinationPath = "" }; // act Assert.ThrowsAsync(async () => await _directFileOperationsService.HandleDirectFileOperationsRequest(request, FileOperationType.Move)); _mockFileOperationsService.Verify(service => service.PerformFileOperation(It.IsAny()), Times.Once); } }