public async Task ResolveAsync_ShouldCallVerint_SearchPartyAsync_WithEmailSearchCriteria_WhenMatchingUserNotFound_OnInitialSearch() { // Arrange _mockIndividualWeighting.SetupSequence(_ => _.Calculate(It.IsAny <FWTIndividual>(), It.IsAny <Customer>())) .Returns(0) .Returns(1); var userSearchResponse = new FWTObjectBriefDetails { ObjectID = new FWTObjectID() }; _mockClient.Setup(_ => _.searchForPartyAsync(It.IsAny <FWTPartySearch>())) .ReturnsAsync(new searchForPartyResponse { FWTObjectBriefDetailsList = new FWTObjectBriefDetails[1] { userSearchResponse } }); _mockClient.Setup(_ => _.retrieveIndividualAsync(It.IsAny <FWTObjectID>())) .ReturnsAsync(new retrieveIndividualResponse { FWTIndividual = new FWTIndividual { BriefDetails = new FWTObjectBriefDetails { ObjectID = new FWTObjectID() } } }); var customer = new CustomerBuilder() .WithEmail("*****@*****.**") .Build(); // Act var result = await _service.ResolveAsync(customer); // Assert Assert.NotNull(result); _mockClient.Verify(_ => _.searchForPartyAsync(It.Is <FWTPartySearch>(x => x.SearchType == "individual" && x.EmailAddress == "*****@*****.**")), Times.Exactly(2)); _mockClient.Verify(_ => _.retrieveIndividualAsync(It.IsAny <FWTObjectID>()), Times.Exactly(2)); }
public FWTObjectBriefDetails Resolve(Case crmCase) { var associatedObject = new FWTObjectID(); var associatedObjectBriefDetails = new FWTObjectBriefDetails(); switch (crmCase.AssociatedWithBehaviour) { case AssociatedWithBehaviourEnum.Street: if (crmCase.Street.Reference != null) { associatedObject.ObjectType = VerintConstants.StreetObjectType; associatedObject.ObjectReference = new[] { crmCase.Street.Reference }; associatedObjectBriefDetails.ObjectID = associatedObject; return(associatedObjectBriefDetails); } break; case AssociatedWithBehaviourEnum.Property: if (crmCase.Property.Reference != null) { associatedObject.ObjectType = VerintConstants.PropertyObjectType; associatedObject.ObjectReference = new[] { crmCase.Property.Reference }; associatedObjectBriefDetails.ObjectID = associatedObject; return(associatedObjectBriefDetails); } break; case AssociatedWithBehaviourEnum.Organisation: if (crmCase.Organisation != null && crmCase.Organisation.Reference != null) { associatedObjectBriefDetails.ObjectID = new FWTObjectID { ObjectType = VerintConstants.OrganisationObjectType, ObjectReference = new[] { crmCase.Organisation.Reference } }; return(associatedObjectBriefDetails); } break; case AssociatedWithBehaviourEnum.Individual: if (crmCase.Customer.CustomerReference != null) { associatedObject.ObjectType = VerintConstants.IndividualObjectType; associatedObject.ObjectReference = new[] { crmCase.Customer.CustomerReference }; associatedObjectBriefDetails.Details = crmCase.Customer.FullName; associatedObjectBriefDetails.ObjectID = associatedObject; return(associatedObjectBriefDetails); } break; default: return(null); } return(null); }