298 lines
13 KiB
C#
298 lines
13 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
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.Organizations;
|
|
using LCU.Library.Internal.Exceptions;
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
namespace LCU.Api.Internal.CoreApiWrapperTest.Controllers
|
|
{
|
|
public class OrganizationControllerTest
|
|
{
|
|
private OrganizationController _organizationController;
|
|
private Mock<IOrganizationService> _mockOrganizationService;
|
|
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
_mockOrganizationService = new Mock<IOrganizationService>();
|
|
|
|
_organizationController = new OrganizationController(_mockOrganizationService.Object);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationNumber_OK()
|
|
{
|
|
const long organizationNumber = 123334234324;
|
|
var testOrganizationResult = new Organization
|
|
{
|
|
Name = "Test Organization"
|
|
};
|
|
var testOrganizationsResult = new List<Organization> { testOrganizationResult };
|
|
|
|
_mockOrganizationService.Setup(x => x.GetOrganizationByOrganizationNumber(organizationNumber)).ReturnsAsync(testOrganizationsResult).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByOrganizationNumber(organizationNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var okResult = results as OkObjectResult;
|
|
Assert.NotNull(okResult);
|
|
Assert.AreEqual(200, okResult.StatusCode);
|
|
|
|
var result = okResult.Value as List<Organization>;
|
|
Assert.NotNull(result);
|
|
Assert.AreEqual(1, result.Count);
|
|
Assert.AreEqual(testOrganizationResult.Name, result.FirstOrDefault()?.Name);
|
|
_mockOrganizationService.Verify();
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationNumber_ExceptionThrown_ServerError()
|
|
{
|
|
const long organizationNumber = 123334234324;
|
|
|
|
_mockOrganizationService.Setup(x => x.GetOrganizationByOrganizationNumber(organizationNumber)).ThrowsAsync(new Exception("Thrown from unit test")).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByOrganizationNumber(organizationNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var badRes = results as StatusCodeResult;
|
|
Assert.NotNull(badRes);
|
|
Assert.AreEqual(500, badRes.StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationNumber_ServiceExceptionThrown_ServerError()
|
|
{
|
|
const long organizationNumber = 123334234324;
|
|
|
|
_mockOrganizationService.Setup(x => x.GetOrganizationByOrganizationNumber(organizationNumber)).ThrowsAsync(new ServiceException("Thrown from unit test")).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByOrganizationNumber(organizationNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var badRes = results as StatusCodeResult;
|
|
Assert.NotNull(badRes);
|
|
Assert.AreEqual(500, badRes.StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetMemberByAccountNumber_ServiceException_ServerErrorReturned()
|
|
{
|
|
const long organizationNumber = 123334234324;
|
|
_mockOrganizationService.Setup(x => x.GetOrganizationByOrganizationNumber(organizationNumber)).ThrowsAsync(new ServiceException("Thrown from unit test")).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByOrganizationNumber(organizationNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var badRes = results as StatusCodeResult;
|
|
Assert.NotNull(badRes);
|
|
Assert.AreEqual(500, badRes.StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetMemberByAccountNumber_Exception_ServerErrorReturned()
|
|
{
|
|
const long organizationNumber = 123334234324;
|
|
_mockOrganizationService.Setup(x => x.GetOrganizationByOrganizationNumber(organizationNumber)).ThrowsAsync(new Exception("Thrown from unit test")).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByOrganizationNumber(organizationNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var badRes = results as StatusCodeResult;
|
|
Assert.NotNull(badRes);
|
|
Assert.AreEqual(500, badRes.StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByMemberAgreementNumber_OK()
|
|
{
|
|
const long memberNumber = 123334234324;
|
|
var testOrganizationResult = new Organization
|
|
{
|
|
Name = "Test Organization"
|
|
};
|
|
|
|
_mockOrganizationService.Setup(x => x.GetMemberByMemberAgreeNbr(memberNumber)).ReturnsAsync(testOrganizationResult).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByMemberAgreementNumber(memberNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var okResult = results as OkObjectResult;
|
|
Assert.NotNull(okResult);
|
|
Assert.AreEqual(200, okResult.StatusCode);
|
|
|
|
var result = okResult.Value as Organization;
|
|
Assert.NotNull(result);
|
|
Assert.AreEqual(testOrganizationResult.Name, result?.Name);
|
|
_mockOrganizationService.Verify();
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByMemberAgreementNumber_ServiceException_ServerErrorReturned()
|
|
{
|
|
const long memberNumber = 123334234324;
|
|
_mockOrganizationService.Setup(x => x.GetMemberByMemberAgreeNbr(memberNumber)).ThrowsAsync(new ServiceException("Thrown from unit test")).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByMemberAgreementNumber(memberNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var badRes = results as StatusCodeResult;
|
|
Assert.NotNull(badRes);
|
|
Assert.AreEqual(500, badRes.StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByMemberAgreementNumber_Exception_ServerErrorReturned()
|
|
{
|
|
const long memberNumber = 123334234324;
|
|
_mockOrganizationService.Setup(x => x.GetMemberByMemberAgreeNbr(memberNumber)).ThrowsAsync(new Exception("Thrown from unit test")).Verifiable();
|
|
|
|
var results = await _organizationController.GetOrganizationByMemberAgreementNumber(memberNumber);
|
|
|
|
Assert.NotNull(results);
|
|
var badRes = results as StatusCodeResult;
|
|
Assert.NotNull(badRes);
|
|
Assert.AreEqual(500, badRes.StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationName_GetOrganizationByNameThrowsServiceException_Returns500()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
_mockOrganizationService
|
|
.Setup(os => os.GetOrganizationByName(organizationName))
|
|
.ThrowsAsync(new ServiceException(string.Empty));
|
|
|
|
var response = await _organizationController.GetOrganizationByOrganizationName(organizationName);
|
|
|
|
Assert.IsInstanceOf<StatusCodeResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status500InternalServerError, ((StatusCodeResult)response).StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationName_GetOrganizationByNameThrowsNonServiceException_500()
|
|
{
|
|
var exception = new Exception();
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
_mockOrganizationService
|
|
.Setup(os => os.GetOrganizationByName(organizationName))
|
|
.ThrowsAsync(exception);
|
|
|
|
var response = await _organizationController.GetOrganizationByOrganizationName(organizationName);
|
|
|
|
Assert.IsInstanceOf<StatusCodeResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status500InternalServerError, ((StatusCodeResult)response).StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationName_GetOrganizationByNameSucceeds_ReturnsOkAndResult()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
var organizations = new[] { new Organization() };
|
|
_mockOrganizationService
|
|
.Setup(os => os.GetOrganizationByName(organizationName))
|
|
.ReturnsAsync(organizations);
|
|
|
|
var response = await _organizationController.GetOrganizationByOrganizationName(organizationName);
|
|
|
|
Assert.IsInstanceOf<OkObjectResult>(response);
|
|
Assert.AreSame(organizations, ((OkObjectResult)response).Value);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationNameLike_ServiceCallReturns_ReturnsOkAndResults()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
var limit = DateTime.Now.Millisecond;
|
|
var organizations = new []{ new Organization{ Name = organizationName } };
|
|
_mockOrganizationService
|
|
.Setup(s => s.GetOrganizationByNameLike(organizationName, limit))
|
|
.ReturnsAsync(organizations);
|
|
|
|
var response = await _organizationController.GetOrganizationByOrganizationNameLike(organizationName, limit);
|
|
|
|
Assert.IsInstanceOf<OkObjectResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status200OK, ((OkObjectResult)response).StatusCode);
|
|
Assert.AreSame(organizations, ((OkObjectResult)response).Value);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationNameLike_ServiceThrowsServiceException_Returns500()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
_mockOrganizationService
|
|
.Setup(s => s.GetOrganizationByNameLike(organizationName, It.IsAny<int?>()))
|
|
.ThrowsAsync(new ServiceException(string.Empty));
|
|
|
|
var response = await _organizationController.GetOrganizationByOrganizationNameLike(organizationName);
|
|
|
|
Assert.IsInstanceOf<StatusCodeResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status500InternalServerError, ((StatusCodeResult)response).StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task GetOrganizationByOrganizationNameLike_ServiceThrowsException_Returns500()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
_mockOrganizationService
|
|
.Setup(s => s.GetOrganizationByNameLike(organizationName, It.IsAny<int?>()))
|
|
.ThrowsAsync(new Exception());
|
|
|
|
var response = await _organizationController.GetOrganizationByOrganizationNameLike(organizationName);
|
|
|
|
Assert.IsInstanceOf<StatusCodeResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status500InternalServerError, ((StatusCodeResult)response).StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task CountOrganizationNumbersByName_ServiceCallReturns_ReturnsOkAndResults()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
var count = DateTime.Now.Millisecond;
|
|
_mockOrganizationService
|
|
.Setup(s => s.CountOrganizationNumbersByName(organizationName))
|
|
.ReturnsAsync(count);
|
|
|
|
var response = await _organizationController.CountOrganizationNumbersByName(organizationName);
|
|
|
|
Assert.IsInstanceOf<OkObjectResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status200OK, ((OkObjectResult)response).StatusCode);
|
|
Assert.AreEqual(count, ((OkObjectResult)response).Value);
|
|
}
|
|
|
|
[Test]
|
|
public async Task CountOrganizationNumbersByName_ServiceThrowsServiceException_Returns500()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
_mockOrganizationService
|
|
.Setup(s => s.CountOrganizationNumbersByName(organizationName))
|
|
.ThrowsAsync(new ServiceException(string.Empty));
|
|
|
|
var response = await _organizationController.CountOrganizationNumbersByName(organizationName);
|
|
|
|
Assert.IsInstanceOf<StatusCodeResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status500InternalServerError, ((StatusCodeResult)response).StatusCode);
|
|
}
|
|
|
|
[Test]
|
|
public async Task CountOrganizationNumbersByName_ServiceThrowsException_Returns500()
|
|
{
|
|
var organizationName = Guid.NewGuid().ToString();
|
|
_mockOrganizationService
|
|
.Setup(s => s.CountOrganizationNumbersByName(organizationName))
|
|
.ThrowsAsync(new Exception());
|
|
|
|
var response = await _organizationController.CountOrganizationNumbersByName(organizationName);
|
|
|
|
Assert.IsInstanceOf<StatusCodeResult>(response);
|
|
Assert.AreEqual(StatusCodes.Status500InternalServerError, ((StatusCodeResult)response).StatusCode);
|
|
}
|
|
}
|
|
} |