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.LcuModels.Members; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.Mixed; namespace LCU.Api.Internal.CoreApiWrapperTest.Controllers { public class MemberControllerTest { private MemberController _memberController; private Mock _mockMemberService; private Mock _mockLoanService; [SetUp] public void SetUp() { _mockMemberService = new Mock(); _mockLoanService = new Mock(); _memberController = new MemberController(_mockMemberService.Object, _mockLoanService.Object); } [Test] public async Task GetMemberByAccountNumber_OK() { _mockMemberService.Setup(x => x.GetMemberByAccountNumber(123334234324)).ReturnsAsync(new Member(){ MemberId = 1}).Verifiable(); var results = await _memberController.GetMemberByAccountNumber(123334234324); Assert.NotNull(results); var okResult = results as OkObjectResult; Assert.NotNull(okResult); Assert.AreEqual(200, okResult.StatusCode); var result = okResult.Value as Member; Assert.NotNull(result); Assert.AreEqual(1, result.MemberId); _mockLoanService.Verify(); } [Test] public async Task GetMemberByAccountNumber_Exception() { _mockMemberService.Setup(x => x.GetMemberByAccountNumber(It.IsAny())).Throws(new Exception("Oops")); var results = await _memberController.GetMemberByAccountNumber(1234555); Assert.NotNull(results); var badRes = results as StatusCodeResult; Assert.NotNull(badRes); Assert.AreEqual(500, badRes.StatusCode); } [Test] public async Task GetPersonOrOrganizationNumberByMemberNumber_PersonFound() { long personMemberNumber = 123; string personName = "John E Jacob Jr"; var personOrOrganization = new PersonOrganization() { PersonNumber = personMemberNumber.ToString(), EntityName = personName }; _mockMemberService.Setup(x => x.GetPersonOrOrganizationNumberByMemberId(It.IsAny())).ReturnsAsync(personOrOrganization).Verifiable(); var result = await _memberController.GetPersonOrOrganizationNumberByMemberId(personMemberNumber); var okResult = result as OkObjectResult; var personOrOrganizationResult = okResult.Value as PersonOrganization; Assert.NotNull(result); Assert.AreEqual(personMemberNumber.ToString(), personOrOrganizationResult.PersonNumber); Assert.AreEqual(personName, personOrOrganizationResult.EntityName); Assert.IsNull(personOrOrganizationResult.OrganizationNumber); Assert.AreEqual(200, okResult.StatusCode); } [Test] public async Task GetPersonOrOrganizationNumberByMemberNumber_OrganizationFound() { long organizationMemberNumber = 123; string organizationName = "John E Consulting LLC"; var personOrOrganization = new PersonOrganization() { OrganizationNumber = organizationMemberNumber.ToString(), EntityName = organizationName }; _mockMemberService.Setup(x => x.GetPersonOrOrganizationNumberByMemberId(It.IsAny())).ReturnsAsync(personOrOrganization).Verifiable(); var result = await _memberController.GetPersonOrOrganizationNumberByMemberId(organizationMemberNumber); var okResult = result as OkObjectResult; var personOrOrganizationResult = okResult.Value as PersonOrganization; Assert.NotNull(result); Assert.AreEqual(organizationMemberNumber.ToString(), personOrOrganizationResult.OrganizationNumber); Assert.AreEqual(organizationName, personOrOrganizationResult.EntityName); Assert.IsNull(personOrOrganizationResult.PersonNumber); Assert.AreEqual(200, okResult.StatusCode); } [Test] public async Task GetPersonOrOrganizationNumberByMemberNumber_NeitherFound_Exception() { long organizationMemberNumber = 123; _mockMemberService.Setup(x => x.GetPersonOrOrganizationNumberByMemberId(It.IsAny())).Throws(new ArgumentNullException()).Verifiable(); var result = await _memberController.GetPersonOrOrganizationNumberByMemberId(organizationMemberNumber); var notFoundResult = result as StatusCodeResult; Assert.NotNull(result); Assert.NotNull(notFoundResult); Assert.AreEqual(404, notFoundResult.StatusCode); } } }