using System; using System.Linq; using Moq; using NUnit.Framework; using System.Collections.Generic; using System.Threading.Tasks; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.AccessChannelPersons; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.CoreRequests; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.MemberAgreements; using LCU.Library.Internal.DataCleanUpModel.Enum; using LCU.Library.Internal.DataCleanUpModel.Models; using LCU.Api.Internal.DataCleanUp.Services; using LCU.Api.Internal.DataCleanUp.DataAccess; using LCU.Library.Internal.CoreApiWrapperModel.CoreModels.AccessTypes; namespace LCU.Api.Internal.DataCleanUpTest.Services; public class DeactivateCustodialEAgreementsServiceTest { private DeactivateCustodialEAgreementsService _deactivateCustodialEAgreementsService; private Mock _mockCoreApiWrapperService; [SetUp] public void Setup() { _mockCoreApiWrapperService = new Mock(); _deactivateCustodialEAgreementsService = new DeactivateCustodialEAgreementsService(_mockCoreApiWrapperService.Object); } [Test] public async Task CleanUp_Success() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = 12312312323123 }; var testAccessType = new AccessType() { Id = "WWW", IsActive = true, UserId = null }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); //Set Up UpdateAccessChannelPersons var testUpdatedAccessType = new AccessType() { Id = "WWW", IsActive = false }; _mockCoreApiWrapperService.Setup(x => x.UpdateAccessType(It.IsAny())) .ReturnsAsync(testUpdatedAccessType); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsTrue(result.Successful); Assert.IsEmpty(result.ResponseStack); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Once); } [Test] public async Task CleanUp_Success_NoHyphenatedUserIds() { //Set Up GetAgreePersonsWithHyphenatedUserIds var testPersonNumbers = new List() { }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsTrue(result.Successful); Assert.IsEmpty(result.ResponseStack); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Never); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateRequest_PersonNumber_NotLong() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111e111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Never); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateReques_CoreApiMessage_Null() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons CoreApiMessage>? coreApiMessage = null; _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateReques_CoreApiMessage_MessageHeader_Null() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons CoreMessageHeader? coreMessageHeader = null; var testAccessType = new AccessType() { Id = "WWW", IsActive = true }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateReques_CoreApiMessage_MessageHeader_UpdateKey_Null() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = null }; var testAccessType = new AccessType() { Id = "WWW", IsActive = true }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateReques_CoreApiMessage_MessageBody_Null() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = 12312312323123 }; List? testAccessChannelPersons = null; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateReques_AccessChannelPersonsToUpdate_Null() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = 12312312323123 }; var testAccessType = new AccessType() { Id = "TTT", IsActive = true }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsTrue(result.Successful); Assert.AreEqual(0, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateReques_UpdatedAccessType_Null() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = 12312312323123 }; var testAccessType = new AccessType() { Id = "WWW", IsActive = true, UserId = null }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true, UserId = null } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); //Set Up UpdateAccessChannelPersons AccessType? testUpdatedAccessType = null; _mockCoreApiWrapperService.Setup(x => x.UpdateAccessType(It.IsAny())) .ReturnsAsync(testUpdatedAccessType); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Once); } [Test] public async Task CleanUp_Fail_SetUpAccessTypeUpdateReques_UpdatedAccessType_IsActive_True() { //Set Up GetActiveCustodialAgreePersonNumbers var testPersonNumbers = new List() { "111111" }; _mockCoreApiWrapperService.Setup(x => x.GetActiveCustodialAgreePersonNumbers()).ReturnsAsync(testPersonNumbers); //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = 12312312323123 }; var testAccessType = new AccessType() { Id = "WWW", IsActive = true, UserId = null }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true, UserId = null } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); //Set Up UpdateAccessChannelPersons var testUpdatedAccessType = new AccessType() { Id = "WWW", IsActive = true }; _mockCoreApiWrapperService.Setup(x => x.UpdateAccessType(It.IsAny())) .ReturnsAsync(testUpdatedAccessType); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var result = await _deactivateCustodialEAgreementsService.CleanUp(testRequest); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsFalse(result.Successful); Assert.AreEqual(1, result.ResponseStack.Count()); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Once); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Once); } [Test] public async Task HandleUpdateDeactivateCustodialEAgreement_Success() { //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = 12312312323123 }; var testAccessType = new AccessType() { Id = "WWW", IsActive = true, UserId = null }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); //Set Up UpdateAccessChannelPersons var testUpdatedAccessType = new AccessType() { Id = "WWW", IsActive = false }; _mockCoreApiWrapperService.Setup(x => x.UpdateAccessType(It.IsAny())) .ReturnsAsync(testUpdatedAccessType); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var cleanUpResult = new DataCleanUpResult(testRequest, true, new List()); var result = await _deactivateCustodialEAgreementsService.HandleUpdateDeactivateCustodialEAgreement(cleanUpResult, "111111"); Assert.NotNull(result); Assert.AreEqual(testRequest, result.Request); Assert.IsTrue(result.Successful); Assert.IsEmpty(result.ResponseStack); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Never); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Once); } [Test] public async Task SetUpAccessTypeUpdateRequest_Success() { //Set Up GetCoreApiMessageAccessChannelPersons var coreMessageHeader = new CoreMessageHeader() { UpdateKey = 12312312323123 }; var testAccessType = new AccessType() { Id = "WWW", IsActive = true, UserId = null }; var testAccessChannelPerson = new AccessChannelPerson() { Id = "2313213_1", ChannelNumber = 2313213, PersonNumber = 1, UserId = "2312312312", AccessTypes = new List() { testAccessType } }; var testAccessChannelPersons = new List() { testAccessChannelPerson , new AccessChannelPerson() { PersonNumber = 1, UserId= "1C1", AccessTypes = new List() { new AccessType() { Id= "VRU", IsActive = true } } } }; var coreApiMessage = new CoreApiMessage>(coreMessageHeader, testAccessChannelPersons); _mockCoreApiWrapperService.Setup(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>())) .ReturnsAsync(coreApiMessage); var testRequest = new DataCleanUpRequest() { CleanUpType = CleanUpTypes.DeactivateCustodialEAgreements }; var cleanUpResult = new DataCleanUpResult(testRequest, true, new List()); var result = await _deactivateCustodialEAgreementsService.SetUpAccessTypeUpdateRequest("111111"); Assert.NotNull(result); Assert.AreEqual(testAccessType, result.AccessType); Assert.AreEqual(12312312323123, result.UpdateKey); Assert.AreEqual("2313213_1", result.AccessChannelPersonId); _mockCoreApiWrapperService.Verify(x => x.GetActiveCustodialAgreePersonNumbers(), Times.Never); _mockCoreApiWrapperService.Verify(x => x.GetCoreApiMessageAccessChannelPersons(It.IsAny(), It.IsAny>()), Times.Once); _mockCoreApiWrapperService.Verify(x => x.UpdateAccessType(It.IsAny()), Times.Never); } }