using System; using AutoMapper; using BD.BDLibrary.Business.Interfaces; using BD.BDLibrary.WebAPI.Controllers.api.V6; using BD.BDLibrary.WebAPI.Models; using Microsoft.AspNetCore.Mvc; using Moq; using Xunit; namespace BD.BDLibrary.Tests.WebAPI.V6 { public class DispensableCurationControllerTests { [Fact] public void PostDispensableCurationRequest_ValidRequest_ReturnsOk() { // Arrange var requestModel = new DispensableCurationRequestPostRequestModel { // Initialize with valid request data here }; var serviceMock = new Mock(); var mapperMock = new Mock(); var controller = new DispensableCurationController(serviceMock.Object, mapperMock.Object); // Configure mocks serviceMock.Setup(s => s.AddDispensableCurationRequest(It.IsAny())) .Returns(new DispensableCurationRequestPostResponseDTO { // Initialize with response data here }); // Act var result = controller.PostDispensableCurationRequest(requestModel) as OkObjectResult; // Assert Assert.NotNull(result); Assert.Equal(StatusCodes.Status200OK, result.StatusCode); // You can further assert the response content if needed var responseObject = result.Value as DispensableCurationRequestPostResponseModel; Assert.NotNull(responseObject); // Add assertions for response object properties } [Fact] public void PostDispensableCurationRequest_InvalidRequest_ReturnsBadRequest() { // Arrange var serviceMock = new Mock(); var mapperMock = new Mock(); var controller = new DispensableCurationController(serviceMock.Object, mapperMock.Object); // Act var result = controller.PostDispensableCurationRequest(null) as BadRequestObjectResult; // Assert Assert.NotNull(result); Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode); } [Fact] public void PostDispensableCurationRequest_InvalidModelState_ReturnsBadRequest() { // Arrange var requestModel = new DispensableCurationRequestPostRequestModel { // Initialize with invalid request data here }; var serviceMock = new Mock(); var mapperMock = new Mock(); var controller = new DispensableCurationController(serviceMock.Object, mapperMock.Object); controller.ModelState.AddModelError("PropertyName", "Error Message"); // Act var result = controller.PostDispensableCurationRequest(requestModel) as BadRequestObjectResult; // Assert Assert.NotNull(result); Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode); } [Fact] public void PostDispensableCurationRequest_ServiceThrowsException_ReturnsBadRequest() { // Arrange var requestModel = new DispensableCurationRequestPostRequestModel { // Initialize with valid request data here }; var serviceMock = new Mock(); var mapperMock = new Mock(); var controller = new DispensableCurationController(serviceMock.Object, mapperMock.Object); // Configure mock to throw an exception serviceMock.Setup(s => s.AddDispensableCurationRequest(It.IsAny())) .Throws(new Exception("Some error message")); // Act var result = controller.PostDispensableCurationRequest(requestModel) as BadRequestObjectResult; // Assert Assert.NotNull(result); Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode); } } }