Hi

🧩 Syntax:
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<IDispensableCurationService>();
            var mapperMock = new Mock<IMapper>();
            var controller = new DispensableCurationController(serviceMock.Object, mapperMock.Object);

            // Configure mocks
            serviceMock.Setup(s => s.AddDispensableCurationRequest(It.IsAny<DispensableCurationRequestPostRequestDTO>()))
                .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<IDispensableCurationService>();
            var mapperMock = new Mock<IMapper>();
            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<IDispensableCurationService>();
            var mapperMock = new Mock<IMapper>();
            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<IDispensableCurationService>();
            var mapperMock = new Mock<IMapper>();
            var controller = new DispensableCurationController(serviceMock.Object, mapperMock.Object);

            // Configure mock to throw an exception
            serviceMock.Setup(s => s.AddDispensableCurationRequest(It.IsAny<DispensableCurationRequestPostRequestDTO>()))
                .Throws(new Exception("Some error message"));

            // Act
            var result = controller.PostDispensableCurationRequest(requestModel) as BadRequestObjectResult;

            // Assert
            Assert.NotNull(result);
            Assert.Equal(StatusCodes.Status400BadRequest, result.StatusCode);
        }
    }
}