Files
monorepo/LCU.Api.Internal.CoreApiWrapper/LCU.Api.Internal.CoreApiWrapperTest/Controllers/TaxControllerTest.cs
T
2026-03-31 14:32:23 -05:00

144 lines
5.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Moq;
using NUnit.Framework;
using LCU.Api.Internal.CoreApiWrapper.Controllers;
using LCU.Api.Internal.CoreApiWrapper.Services;
using System.Threading.Tasks;
using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Tax;
namespace LCU.Api.Internal.CoreApiWrapperTest.Controllers
{
public class TaxControllerTest
{
private TaxController _taxController;
private Mock<ITaxService> _mockTaxService;
[SetUp]
public void SetUp()
{
_mockTaxService = new Mock<ITaxService>();
_taxController = new TaxController(_mockTaxService.Object);
}
[Test]
public async Task GetPersonsTaxIdData_OK()
{
var personTaxIdDataResponse = new List<PersonTaxIdDataResponse>
{
new() {
FirstName = "Greg",
MiddleInitial = "H",
LastName = "Stevens",
Suffix = "Jr.",
NameFull = "Greg H. Stevens Jr.",
PersonNumber = 123
}
};
_mockTaxService.Setup(service => service.GetPersonsTaxIdData("123")).ReturnsAsync(personTaxIdDataResponse).Verifiable();
var results = await _taxController.GetPersonsTaxIdData("123");
Assert.NotNull(results);
var okResult = results as OkObjectResult;
Assert.NotNull(okResult);
Assert.AreEqual(200, okResult.StatusCode);
var dataResponse = okResult.Value as IEnumerable<PersonTaxIdDataResponse>;
Assert.NotNull(dataResponse);
Assert.AreEqual(1, dataResponse.Count());
var firstResponse = dataResponse.First();
Assert.AreEqual("Greg",firstResponse.FirstName);
Assert.AreEqual("H", firstResponse.MiddleInitial);
Assert.AreEqual("Stevens", firstResponse.LastName);
Assert.AreEqual("Jr.", firstResponse.Suffix);
Assert.AreEqual("Greg H. Stevens Jr.", firstResponse.NameFull);
Assert.AreEqual(123, firstResponse.PersonNumber);
_mockTaxService.Verify();
}
[Test]
public async Task GetPersonsTaxIdData_EmptyString_BadRequest()
{
var results = await _taxController.GetPersonsTaxIdData("");
Assert.NotNull(results);
var okResult = results as BadRequestObjectResult;
Assert.NotNull(okResult);
Assert.AreEqual(400, okResult.StatusCode);
_mockTaxService.Verify(service => service.GetPersonsTaxIdData(It.IsAny<string>()), Times.Never);
}
[Test]
public async Task GetPersonsTaxIdData_ErrorThrown_ServerError()
{
_mockTaxService.Setup(service => service.GetPersonsTaxIdData("123")).ThrowsAsync(new Exception("Thrown from unit test."));
var results = await _taxController.GetPersonsTaxIdData("123");
Assert.NotNull(results);
var okResult = results as StatusCodeResult;
Assert.NotNull(okResult);
Assert.AreEqual(500, okResult.StatusCode);
_mockTaxService.Verify();
}
[Test]
public async Task GetOrganizationsTaxIdData_OK()
{
var organizationsTaxIdDataResponse = new List<OrganizationTaxIdDataResponse>
{
new() {
Name = "Electric Company",
OrganizationNumber = 123
}
};
_mockTaxService.Setup(service => service.GetOrganizationsTaxIdData("123")).ReturnsAsync(organizationsTaxIdDataResponse).Verifiable();
var results = await _taxController.GetOrganizationsTaxIdData("123");
Assert.NotNull(results);
var okResult = results as OkObjectResult;
Assert.NotNull(okResult);
Assert.AreEqual(200, okResult.StatusCode);
var dataResponse = okResult.Value as IEnumerable<OrganizationTaxIdDataResponse>;
Assert.NotNull(dataResponse);
Assert.AreEqual(1, dataResponse.Count());
var firstResponse = dataResponse.First();
Assert.AreEqual("Electric Company",firstResponse.Name);
Assert.AreEqual(123, firstResponse.OrganizationNumber);
_mockTaxService.Verify();
}
[Test]
public async Task GetOrganizationsTaxIdData_EmptyString_BadRequest()
{
var results = await _taxController.GetOrganizationsTaxIdData("");
Assert.NotNull(results);
var okResult = results as BadRequestObjectResult;
Assert.NotNull(okResult);
Assert.AreEqual(400, okResult.StatusCode);
_mockTaxService.Verify(service => service.GetOrganizationsTaxIdData(It.IsAny<string>()), Times.Never);
}
[Test]
public async Task GetOrganizationsTaxIdData_ErrorThrown_ServerError()
{
_mockTaxService.Setup(service => service.GetOrganizationsTaxIdData("123")).ThrowsAsync(new Exception("Thrown from unit test."));
var results = await _taxController.GetOrganizationsTaxIdData("123");
Assert.NotNull(results);
var okResult = results as StatusCodeResult;
Assert.NotNull(okResult);
Assert.AreEqual(500, okResult.StatusCode);
_mockTaxService.Verify();
}
}
}