示例#1
0
        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));
        }
示例#2
0
        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);
        }