Ejemplo n.º 1
0
        public async Task EvaluateUserGroupsAsync_HasStaticGroups_GroupsReturned()
        {
            // Arrange
            var staticGroups    = new[] { "StaticUserGroup1", "StaticUserGroup2" };
            var evaluateContext = new UserGroupEvaluationContext()
            {
                Customer = new Contact
                {
                    Groups = staticGroups
                }
            };

            var searchResult = new CustomerSegmentSearchResult
            {
                Results = new List <CustomerSegment>()
                {
                    new CustomerSegment
                    {
                        ExpressionTree = new CustomerSegmentTree()
                    }
                }
            };

            var searchService = new Mock <ICustomerSegmentSearchService>();

            searchService.Setup(x => x.SearchCustomerSegmentsAsync(It.IsAny <CustomerSegmentSearchCriteria>())).ReturnsAsync(searchResult);
            var evaluator = new UserGroupEvaluator(searchService.Object);

            // Act
            var evaluationResult = await evaluator.EvaluateUserGroupsAsync(evaluateContext);

            // Assert
            var expectedResult = staticGroups.Select(group => new UserGroupInfo
            {
                UserGroup = group
            });

            evaluationResult.Should().BeEquivalentTo(expectedResult);
        }
Ejemplo n.º 2
0
        public async Task EvaluateUserGroupsAsync_HasDynamicGroups_GroupsReturned()
        {
            // Arrange
            var birthDate               = DateTime.UtcNow;
            var organizations           = new string[] { "Org1", "Org2" };
            var associatedOrganizations = new string[] { "Org3", "Org4" };
            var firstName               = "Test first name";
            var middleName              = "Test middle name";
            var lastName               = "Test last name";
            var fullName               = "Test full name";
            var salutation             = "Test salutation";
            var defaultLanguage        = "en-US";
            var timeZone               = "UTC";
            var taxPayerId             = "TesTaxPayerId";
            var preferredDelivery      = "PreferredDelivery";
            var preferredCommunication = "PreferredCommunication";

            var dynamicPropertis = new DynamicObjectProperty[]
            {
                new DynamicObjectProperty
                {
                    Values = new DynamicPropertyObjectValue[]
                    {
                        new DynamicPropertyObjectValue
                        {
                            Value     = "DynamicPropertyObjectValueTest",
                            ValueType = DynamicPropertyValueType.ShortText
                        },
                        new DynamicPropertyObjectValue
                        {
                            Value     = "DynamicPropertyObjectValueTest2",
                            ValueType = DynamicPropertyValueType.ShortText
                        }
                    }
                }
            };

            var evaluateContext = new UserGroupEvaluationContext()
            {
                Customer = new Contact
                {
                    Groups                  = new List <string>(),
                    DynamicProperties       = dynamicPropertis,
                    Organizations           = organizations,
                    AssociatedOrganizations = associatedOrganizations,
                    BirthDate               = birthDate,
                    FirstName               = firstName,
                    MiddleName              = middleName,
                    LastName                = lastName,
                    FullName                = fullName,
                    Salutation              = salutation,
                    DefaultLanguage         = defaultLanguage,
                    TimeZone                = timeZone,
                    TaxPayerId              = taxPayerId,
                    PreferredDelivery       = preferredDelivery,
                    PreferredCommunication  = preferredCommunication
                }
            };

            var expressionTree = new CustomerSegmentTree()
            {
                Children = new IConditionTree[]
                {
                    new CustomerSegmentConditionPropertyValues
                    {
                        Properties              = dynamicPropertis,
                        Organizations           = organizations,
                        AssociatedOrganizations = associatedOrganizations,
                        FirstName = firstName,
                        LastName  = lastName,
                        FullName  = fullName,
                        BirthDate = birthDate,
                    }
                }
            };

            var searchResult = new CustomerSegmentSearchResult
            {
                Results = new List <CustomerSegment>()
                {
                    new CustomerSegment
                    {
                        Id             = "CustomerSegmentId",
                        Name           = "Test Customer Segment Name",
                        UserGroup      = "Dynamic User Group",
                        ExpressionTree = expressionTree
                    }
                }
            };

            var searchService = new Mock <ICustomerSegmentSearchService>();

            searchService.Setup(x => x.SearchCustomerSegmentsAsync(It.IsAny <CustomerSegmentSearchCriteria>())).ReturnsAsync(searchResult);
            var evaluator = new UserGroupEvaluator(searchService.Object);

            // Act
            var evaluationResult = await evaluator.EvaluateUserGroupsAsync(evaluateContext);

            // Assert
            var expectedResult = searchResult.Results.Select(s => new UserGroupInfo
            {
                IsDynamic       = true,
                DynamicRuleId   = s.Id,
                DynamicRuleName = s.Name,
                UserGroup       = s.UserGroup
            });

            evaluationResult.Should().BeEquivalentTo(expectedResult);
        }