private static DynamicContentConditionTree GetExpressionTree(params ConditionTree[] condition)
        {
            var blockCondition = new BlockContentCondition()
                                 .WithChildrens(condition);

            var expression = new DynamicContentConditionTree();

            expression.WithChildrens(blockCondition);

            return(expression);
        }
        private IMarketingDynamicContentEvaluator GetEvaluator(DynamicContentItem item, DynamicContentItem[] items, DynamicContentConditionTree expression)
        {
            var groups = new List <DynamicContentPublication>
            {
                new DynamicContentPublication
                {
                    DynamicExpression = expression,
                    IsActive          = true,
                    ContentItems      = new ObservableCollection <DynamicContentItem> {
                        item
                    },
                }
            };

            _dynamicContentSearchServiceMock.Setup(dcs => dcs.SearchContentPublicationsAsync(It.IsAny <DynamicContentPublicationSearchCriteria>()))
            .ReturnsAsync(new Core.Model.DynamicContent.Search.DynamicContentPublicationSearchResult {
                Results = groups.ToArray()
            });
            _dynamicContentServiceMock.Setup(dcs => dcs.GetContentItemsByIdsAsync(new[] { item.Id }))
            .ReturnsAsync(items);

            return(new DefaultDynamicContentEvaluator(_dynamicContentSearchServiceMock.Object, _dynamicContentServiceMock.Object, _loggerMock.Object));
        }
        public async Task EvaluateItemsAsync(DynamicContentEvaluationContext context, DynamicContentConditionTree expression, bool expectedResult)
        {
            // Arrange
            var dynamicContentItem = new DynamicContentItem {
                Id = Guid.NewGuid().ToString()
            };
            var dynamicContentItems = new DynamicContentItem[] { dynamicContentItem };

            var evaluator = GetEvaluator(dynamicContentItem, dynamicContentItems, expression);

            // Act
            var results = await evaluator.EvaluateItemsAsync(context);

            // Assert
            Assert.Equal(expectedResult, dynamicContentItems.Equals(results));
        }