using System; using LCU.API.Collections.CollectionsApi.Controllers; using LCU.API.Collections.CollectionsApi.Exceptions; using LCU.API.Collections.CollectionsApi.Services; using Microsoft.AspNetCore.Mvc; using Moq; using System.Collections.Generic; using LCU.API.Collections.CollectionsApiLib.Models; using Xunit; namespace LCU.API.Collections.CollectionsApiTests.ControllerTests { public class AccountControllerTest { private Mock _mockService; private AccountController _controller; public AccountControllerTest() { _mockService = new Mock(); _controller = new AccountController(_mockService.Object); } [Fact] public async void Get_Accounts_By_Id_OK() { _mockService.Setup(service => service.FindByIdAsync(It.IsAny())).ReturnsAsync(new CollectionsApiLib.Models.TemenosAccount() { AccountId = 12345, AccountIdentifier = "Identifier" }); //arrange //act var result = await _controller.GetAccountByAccountId(12345); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var resultAccount = okResult.Value as CollectionsApiLib.Models.TemenosAccount; Assert.NotNull(resultAccount); } [Fact] public async void Get_Accounts_By_AccountNo_OK() { //arrange _mockService.Setup(service => service.ListByAccountNoAsync(It.IsAny())).ReturnsAsync( new List(){ new CollectionsApiLib.Models.TemenosAccount() { AccountNumber = "54444143", AccountId = 12345, AccountIdentifier = "Identifier" } }); //act var result = await _controller.GetAccountByAccountNo("54444143"); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var resultAccount = okResult.Value as List; Assert.NotNull(resultAccount); } [Fact] public async void Get_Accounts_By_Id_400() { //arrange _mockService.Setup(service => service.FindByIdAsync(It.IsAny())).Throws(new NotFoundException("Oops")); //act var result = await _controller.GetAccountByAccountId(12345); Assert.NotNull(result); var NFResult = result as NotFoundObjectResult; // assert Assert.NotNull(NFResult); Assert.Equal(404, NFResult.StatusCode); } [Fact] public async void Get_Accounts_By_Id_500() { //arrange _mockService.Setup(service => service.FindByIdAsync(It.IsAny())).Throws(new System.Exception("Oops")); //act var result = await _controller.GetAccountByAccountId(12345); Assert.NotNull(result); var result500 = result as StatusCodeResult; // assert Assert.NotNull(result500); Assert.Equal(500, result500.StatusCode); } [Fact] public async void Get_History_By_Id_OK() { //arrange const int accountId = 12345; _mockService.Setup(service => service.GetHistoryByAccountIdAsync(accountId)).ReturnsAsync(new List() { new TemenosHistory() { Created = DateTime.Now, Message = "controllertest", Type = HistoryType.Workflow, UserId = 10 } }); //act var result = await _controller.GetHistoryByAccountId(accountId); Assert.NotNull(result); var okResult = result as OkObjectResult; // assert Assert.NotNull(okResult); Assert.Equal(200, okResult.StatusCode); var resultAccount = okResult.Value as IReadOnlyCollection; Assert.NotNull(resultAccount); } } }