using Moq; using NUnit.Framework; using LCU.Api.Internal.DataCleanUp.Services; using LCU.Api.Internal.DataCleanUp.DataAccess; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.MemberAgreements; using System.Collections.Generic; using System.Threading.Tasks; using LCU.Library.Internal.DataCleanUpModel.Enum; using LCU.Library.Internal.DataCleanUpModel.Models; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreResponses; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreSoapRequests; namespace LCU.Api.Internal.DataCleanUpTest.Services; public class CloseCustodialVruAgreementsServiceTest { private CloseCustodialVruAgreementsService _closeCustodialVruAgreementsService; private Mock _mockCoreApiWrapperService; [SetUp] public void Setup() { _mockCoreApiWrapperService = new Mock(); _closeCustodialVruAgreementsService = new CloseCustodialVruAgreementsService(_mockCoreApiWrapperService.Object); } [Test] public async Task CleanUp_Success() { //Set Up GetActiveCustodialVruCardAgreementAgreePersons var testAgreePersons = new List() { new AgreePerson() { PersonNumber = 1, UserId = "11", AgreeNumber = 1 } }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialVruCardAgreementAgreePersons()).ReturnsAsync(testAgreePersons); //Set Up UpdateAccessChannelPersons var basicResponse = new BasicResponse() { Success = true, Errors = new List() }; _mockCoreApiWrapperService.Setup(x => x.UpdatePersonAgreementDetailTypes(It.IsAny())) .ReturnsAsync(basicResponse); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.HyphenatedUserId }; var result = await _closeCustodialVruAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsTrue(result.Successful); Assert.IsEmpty(result.ResponseStack); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialVruCardAgreementAgreePersons(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdatePersonAgreementDetailTypes(It.IsAny()), Times.Once); } [Test] public async Task CleanUp_AgreePersons_Null_Fail() { //Set Up GetActiveCustodialVruCardAgreementAgreePersons List testAgreePersons = null; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialVruCardAgreementAgreePersons()).ReturnsAsync(testAgreePersons); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.HyphenatedUserId }; var result = await _closeCustodialVruAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialVruCardAgreementAgreePersons(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdatePersonAgreementDetailTypes(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_UpdateResult_Null_Fail() { //Set Up GetActiveCustodialVruCardAgreementAgreePersons var testAgreePersons = new List() { new AgreePerson() { PersonNumber = 1, UserId = "11", AgreeNumber = 1 } }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialVruCardAgreementAgreePersons()).ReturnsAsync(testAgreePersons); //Set Up UpdateAccessChannelPersons BasicResponse? basicResponse = null; _mockCoreApiWrapperService.Setup(x => x.UpdatePersonAgreementDetailTypes(It.IsAny())) .ReturnsAsync(basicResponse); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.HyphenatedUserId }; var result = await _closeCustodialVruAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialVruCardAgreementAgreePersons(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdatePersonAgreementDetailTypes(It.IsAny()), Times.Once); } [Test] public async Task CleanUp_BasicResponse_Return_NotSuccessful_Fail() { //Set Up GetActiveCustodialVruCardAgreementAgreePersons var testAgreePersons = new List() { new AgreePerson() { PersonNumber = 1, UserId = "11", AgreeNumber = 1 } }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialVruCardAgreementAgreePersons()).ReturnsAsync(testAgreePersons); //Set Up UpdateAccessChannelPersons var basicResponse = new BasicResponse() { Success = false, Errors = new List() { "Error has occured" } }; _mockCoreApiWrapperService.Setup(x => x.UpdatePersonAgreementDetailTypes(It.IsAny())) .ReturnsAsync(basicResponse); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.HyphenatedUserId }; var result = await _closeCustodialVruAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialVruCardAgreementAgreePersons(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdatePersonAgreementDetailTypes(It.IsAny()), Times.Once); } }