using System; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using LCU.API.Internal.CoreSoapApiWrapper.CoreSoapUtilities; using LCU.API.Internal.CoreSoapApiWrapper.DataAccess; using LCU.API.Internal.CoreSoapApiWrapper.Models.Requests; using LCU.API.Internal.CoreSoapApiWrapper.Services; namespace LCU.API.Internal.CoreSoapApiWrapperTest.Services { [TestClass] public class PersonAgreementServiceTest { private PersonAgreementService _service; private Mock _mockPersonAgreementDao; public PersonAgreementServiceTest() { _mockPersonAgreementDao = new Mock(); _service = new PersonAgreementService(_mockPersonAgreementDao.Object); } [TestMethod] public void UpdatePersonAgreementsDetailTypes_OK() { var response = new PersonAgreementMaintenanceResponse() { WasSuccessful = true }; _mockPersonAgreementDao.Setup(x => x.SendPersonAgreementMaintenanceRequest(It.IsAny())) .Returns(response).Verifiable(); var request = new PersonAgreementDetailTypeRequest() { PersonNumber = 1, AgreeNumber = 2, DetailTypes = new List() { new DetailType() { DetailTypeCode = "Stat", DetailValue = "CLOS" } } }; var result = _service.UpdatePersonAgreementsDetailTypes(request); Assert.IsNotNull(result); Assert.IsTrue((bool)result.Success); _mockPersonAgreementDao.Verify(); } [TestMethod] public void UpdatePersonAgreementsDetailTypes_Exception() { _mockPersonAgreementDao.Setup(x => x.SendPersonAgreementMaintenanceRequest(It.IsAny())) .Throws(new Exception("Error thrown in unit test.")).Verifiable(); var request = new PersonAgreementDetailTypeRequest() { PersonNumber = 1, AgreeNumber = 2, DetailTypes = new List() { new DetailType() { DetailTypeCode = "Stat", DetailValue = "CLOS" } } }; Assert.ThrowsException(() => _service.UpdatePersonAgreementsDetailTypes(request)); _mockPersonAgreementDao.Verify(); } [TestMethod] public void UpdatePersonAgreementsDetailTypes_DetailTypes_Null_Exception() { var request = new PersonAgreementDetailTypeRequest() { PersonNumber = 1, AgreeNumber = 2, DetailTypes = null }; Assert.ThrowsException(() => _service.UpdatePersonAgreementsDetailTypes(request)); _mockPersonAgreementDao.Verify(x => x.SendPersonAgreementMaintenanceRequest( It.IsAny()), Times.Never); } } }