using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Moq; using NUnit.Framework; using LCU.Api.Internal.CoreApiWrapper.Controllers; using LCU.Api.Internal.CoreApiWrapper.Services; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Associate; namespace LCU.Api.Internal.CoreApiWrapperTest.Controllers { public class AssociateControllerTest { private AssociateController _associateController; private Mock _mockAssociateService; [SetUp] public void SetUp() { _mockAssociateService = new Mock(); _associateController = new AssociateController(_mockAssociateService.Object); } [Test] public async Task GetAssociateDetailsBySsn_OK() { var taxId = Guid.NewGuid().ToString(); var associateDetails = new AssociateDetails() { PersonNumber = DateTime.Now.Millisecond }; _mockAssociateService.Setup(x => x.GetAssociateDetailsBySsn(taxId)) .ReturnsAsync(associateDetails).Verifiable(); var result = await _associateController.GetAssociateDetailsBySsn(taxId); Assert.NotNull(result); var status = result as OkObjectResult; Assert.NotNull(status); Assert.AreEqual(200, status.StatusCode); var associateDetailsResult = status.Value as AssociateDetails; Assert.NotNull(associateDetails); Assert.AreEqual(associateDetails.PersonNumber, associateDetailsResult?.PersonNumber); _mockAssociateService.Verify(); } [Test] public async Task GetAssociateDetailsBySsn_NoContent() { var taxId = Guid.NewGuid().ToString(); AssociateDetails associateDetails = null; _mockAssociateService.Setup(x => x.GetAssociateDetailsBySsn(taxId)) .ReturnsAsync(associateDetails).Verifiable(); var result = await _associateController.GetAssociateDetailsBySsn(taxId); Assert.NotNull(result); var status = result as NoContentResult; Assert.NotNull(status); Assert.AreEqual(204, status.StatusCode); _mockAssociateService.Verify(); } [Test] public async Task GetAssociateDetailsBySsn_BadRequest() { string taxId = null; var result = await _associateController.GetAssociateDetailsBySsn(taxId); Assert.NotNull(result); var status = result as BadRequestObjectResult; Assert.NotNull(status); Assert.AreEqual(400, status.StatusCode); } [Test] public async Task GetAssociateDetailsBySsn_InternalServerError() { var taxId = Guid.NewGuid().ToString(); _mockAssociateService.Setup(x => x.GetAssociateDetailsBySsn(taxId)) .Throws(new Exception("Test")).Verifiable(); var result = await _associateController.GetAssociateDetailsBySsn(taxId); Assert.NotNull(result); var status = result as StatusCodeResult; Assert.NotNull(status); Assert.AreEqual(500, status.StatusCode); _mockAssociateService.Verify(); } } }