using Moq; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Web.Http.Results; using LCU.API.Internal.CoreSoapApiWrapper.Controllers; using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities; using LCU.API.Internal.CoreSoapApiWrapper.Services; using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests; using LCU.API.Internal.CoreSoapApiWrapper.Models.Responses; namespace LCU.API.Internal.CoreSoapApiWrapperTest.Controllers { [TestClass] public class AccountControllerTest { private AccountController _controller; private Mock _mockAccountService; public AccountControllerTest() { _mockAccountService = new Mock(); _controller = new AccountController(_mockAccountService.Object); } [TestMethod] public void GetAccountByAccountNumber_OK() { var maintenanceResponse = new AccountDetailInquiryResponse { WasSuccessful = true }; _mockAccountService.Setup(x => x.GetAccountByAccountNumber(100L)).Returns(maintenanceResponse).Verifiable(); var result = _controller.GetAccountByAccountNumber(100L); Assert.IsNotNull(result); var okResult = result as OkNegotiatedContentResult; Assert.IsNotNull(okResult); Assert.IsTrue((bool)okResult.Content.WasSuccessful); _mockAccountService.Verify(); } [TestMethod] public void GetAccountByAccountNumber_LongIsZero_BadRequest() { _mockAccountService.Verify(x => x.GetAccountByAccountNumber(It.IsAny()), Times.Never); var result = _controller.GetAccountByAccountNumber(0); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(x => x.GetAccountByAccountNumber(It.IsAny()), Times.Never); } [TestMethod] public void GetAccountByAccountNumber_Exception() { _mockAccountService.Setup(x => x.GetAccountByAccountNumber(100L)).Throws(new Exception("Error thrown in unit test.")).Verifiable(); var result = _controller.GetAccountByAccountNumber(100); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(); } [TestMethod] public void PutAccountMaintenanceRequest_OK() { var maintenanceRequest = new AccountMaintenanceRequest { Accounts = new[]{ new MaintenanceAccount { AccountNumber = 123456, DeliveryMethodCode = "PRNT" } } }; var maintenanceResponse = new AccountMaintenanceResponse { WasSuccessful = true }; _mockAccountService.Setup(x => x.SendAccountMaintenanceRequest(maintenanceRequest)).Returns(maintenanceResponse).Verifiable(); var result = _controller.PutAccountMaintenanceRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as OkNegotiatedContentResult; Assert.IsNotNull(okResult); Assert.IsTrue((bool)okResult.Content.WasSuccessful); _mockAccountService.Verify(); } [TestMethod] public void PutAccountMaintenanceRequest_Null_BadRequest() { _mockAccountService.Verify(x => x.SendAccountMaintenanceRequest(It.IsAny()), Times.Never); var result = _controller.PutAccountMaintenanceRequest(null); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(x => x.SendAccountMaintenanceRequest(It.IsAny()), Times.Never); } [TestMethod] public void PutAccountMaintenanceRequest_Exception() { var maintenanceRequest = new AccountMaintenanceRequest { Accounts = new[]{ new MaintenanceAccount { AccountNumber = 123456, DeliveryMethodCode = "PRNT" } } }; _mockAccountService.Setup(x => x.SendAccountMaintenanceRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable(); var result = _controller.PutAccountMaintenanceRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(); } [TestMethod] public void PutAccountAnalysisGroupMaintenanceRequest_OK() { var maintenanceRequest = new AccountAnalysisGroupMaintenanceRequest { AccountNumber = 11111111, IsGenerateAnalysisStatement = true, IsPrintAnalysisStatement = true, IsUseForServiceCharge = true, }; var maintenanceResponse = new AccountAnalysisMaintenanceResponse { WasSuccessful = true }; _mockAccountService.Setup(x => x.SendAccountAnalysisGroupMaintenanceRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable(); var result = _controller.PutAccountAnalysisGroupMaintenanceRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as OkNegotiatedContentResult; Assert.IsNotNull(okResult); Assert.IsTrue((bool)okResult.Content.Success); _mockAccountService.Verify(); } [TestMethod] public void PutAccountAnalysisGroupMaintenanceRequest_Exception() { var maintenanceRequest = new AccountAnalysisGroupMaintenanceRequest { AccountNumber = 11111111, IsGenerateAnalysisStatement = true, IsPrintAnalysisStatement = true, IsUseForServiceCharge = true, }; _mockAccountService.Setup(x => x.SendAccountAnalysisGroupMaintenanceRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable(); var result = _controller.PutAccountAnalysisGroupMaintenanceRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(); } [TestMethod] public void PutAccountNickNameUpdateRequest_OK() { var maintenanceRequest = new AccountNickNameUpdateRequest { AccountNumber = 11111111, AccountDescription = "TestSuccess" }; var maintenanceResponse = new AccountAnalysisMaintenanceResponse { WasSuccessful = true }; _mockAccountService.Setup(x => x.SendAccountNickNameUpdateRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable(); var result = _controller.PutAccountNickNameUpdateRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as OkNegotiatedContentResult; Assert.IsNotNull(okResult); Assert.IsTrue((bool)okResult.Content.Success); _mockAccountService.Verify(); } [TestMethod] public void PutAccountNickNameUpdateRequest_Exception() { var maintenanceRequest = new AccountNickNameUpdateRequest { AccountNumber = 11111111, AccountDescription = "TestException" }; _mockAccountService.Setup(x => x.SendAccountNickNameUpdateRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable(); var result = _controller.PutAccountNickNameUpdateRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(); } [TestMethod] public void PutAccountCreditReportTypeUpdateRequest_OK() { var maintenanceRequest = new AccountCreditReportTypeUpdateRequest { AccountNumber = 11111111, CreditReportType = "EXCL" }; var maintenanceResponse = new AccountAnalysisMaintenanceResponse { WasSuccessful = true }; _mockAccountService.Setup(x => x.SendAccountCreditReportTypeUpdateRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable(); var result = _controller.PutAccountCreditReportTypeUpdateRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as OkNegotiatedContentResult; Assert.IsNotNull(okResult); Assert.IsTrue((bool)okResult.Content.Success); _mockAccountService.Verify(); } [TestMethod] public void PutAccountCreditReportTypeUpdateRequest_Exception() { var maintenanceRequest = new AccountCreditReportTypeUpdateRequest { AccountNumber = 11111111, CreditReportType = "EXCL" }; _mockAccountService.Setup(x => x.SendAccountCreditReportTypeUpdateRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable(); var result = _controller.PutAccountCreditReportTypeUpdateRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(); } [TestMethod] public void PutAccountContractDateUpdateRequest_OK() { var maintenanceRequest = new AccountContractDateUpdateRequest { AccountNumber = 11111111, ContractDate = DateTime.Now, }; var maintenanceResponse = new AccountAnalysisMaintenanceResponse { WasSuccessful = true }; _mockAccountService.Setup(x => x.SendAccountContractDateUpdateRequest(maintenanceRequest)).Returns(new BasicResponse(maintenanceResponse)).Verifiable(); var result = _controller.PutAccountContractDateUpdateRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as OkNegotiatedContentResult; Assert.IsNotNull(okResult); Assert.IsTrue((bool)okResult.Content.Success); _mockAccountService.Verify(); } [TestMethod] public void PutAccountContractDateUpdateRequest_Exception() { var maintenanceRequest = new AccountContractDateUpdateRequest { AccountNumber = 11111111, ContractDate = DateTime.Now, }; _mockAccountService.Setup(x => x.SendAccountContractDateUpdateRequest(maintenanceRequest)).Throws(new Exception("Error thrown in unit test.")).Verifiable(); var result = _controller.PutAccountContractDateUpdateRequest(maintenanceRequest); Assert.IsNotNull(result); var okResult = result as BadRequestErrorMessageResult; Assert.IsNotNull(okResult); _mockAccountService.Verify(); } } }