Exemple #1
0
        public void WhenOperatorIsSingular_ResultFilters_ContainsFilter()
        {
            NullQueryableDataSource dataSource = null;
            Action <QueryDescription, ResultFilterType> assert = (qd, type) =>
            {
                Assert.That(qd.ResultFilters.Count, Is.EqualTo(1));
                Assert.True(qd.ResultFilters.Select(x => x.ResultFilterType).Contains(type));
            };

            dataSource = new NullQueryableDataSource();
            GenerateContext <TypedEntity>(dataSource).First();
            assert.Invoke(dataSource.GeneratedQueryDescription, ResultFilterType.First);

            dataSource = new NullQueryableDataSource();
            GenerateContext <TypedEntity>(dataSource).FirstOrDefault();
            assert.Invoke(dataSource.GeneratedQueryDescription, ResultFilterType.FirstOrDefault);

            dataSource = new NullQueryableDataSource();
            GenerateContext <TypedEntity>(dataSource).Single();
            assert.Invoke(dataSource.GeneratedQueryDescription, ResultFilterType.Single);

            dataSource = new NullQueryableDataSource();
            GenerateContext <TypedEntity>(dataSource).SingleOrDefault();
            assert.Invoke(dataSource.GeneratedQueryDescription, ResultFilterType.SingleOrDefault);

            dataSource = new NullQueryableDataSource();
            GenerateContext <TypedEntity>(dataSource).Last();
            assert.Invoke(dataSource.GeneratedQueryDescription, ResultFilterType.Last);

            dataSource = new NullQueryableDataSource();
            GenerateContext <TypedEntity>(dataSource).LastOrDefault();
            assert.Invoke(dataSource.GeneratedQueryDescription, ResultFilterType.LastOrDefault);
        }
Exemple #2
0
        public void WhenSkipThenTakeIsUsed_ResultFilterType_IsSkipTake()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Skip(5).Take(10);

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            var skipClause = generatedQuery.ResultFilters.First();

            Assert.That(skipClause.ResultFilterType, Is.EqualTo(ResultFilterType.Skip));
            Assert.That(skipClause.SelectorArgument, Is.EqualTo(0));
            Assert.That(skipClause.SkipCount, Is.EqualTo(5));
            Assert.That(skipClause.TakeCount, Is.EqualTo(0));
            var takeClause = generatedQuery.ResultFilters.ElementAt(1);

            Assert.That(takeClause.ResultFilterType, Is.EqualTo(ResultFilterType.Take));
            Assert.That(takeClause.SelectorArgument, Is.EqualTo(0));
            Assert.That(takeClause.SkipCount, Is.EqualTo(0));
            Assert.That(takeClause.TakeCount, Is.EqualTo(10));
        }
Exemple #3
0
        public void CallingExcludeParentIdsSetsExcludeParentIds()
        {
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context        = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var parentId       = new HiveId(Guid.NewGuid());
            var query          = context.ExcludeParentIds(parentId).ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            Assert.True(generatedQuery.From.ExcludeParentIds.Any());
            Assert.That(generatedQuery.From.ExcludeParentIds.Count(), Is.EqualTo(1));
            Assert.True(generatedQuery.From.ExcludeParentIds.Contains(parentId));
        }
Exemple #4
0
        public void WhenOperatorsAreChained_ResultFiltersAreValid()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Skip(5).Take(5).Count();

            // Act
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            Assert.That(generatedQuery.ResultFilters.Count, Is.EqualTo(3));
        }
Exemple #5
0
        public void TypedEntityModel_EntitySchema_EqualsOperator()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Where(x => x.EntitySchema.Alias == "NewsItem");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "Alias", "NewsItem", ValuePredicateType.Equal);
        }
Exemple #6
0
        public void TypedEntityModel_Id_EqualsOperator()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Where(x => x.Id == new HiveId(5));

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "Id", new HiveId(5), ValuePredicateType.Equal);
        }
Exemple #7
0
        public void TypedEntityModel_Attribute_WithSubFieldKey_EqualsOperator_ViaExtension()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Where(x => x.InnerAttribute <string>("items", "subItems") == "blah");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "items", "blah", ValuePredicateType.Equal, "subItems");
        }
Exemple #8
0
        public void TypedEntityModel_Attribute_EqualsOperator()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Where(x => x.Attributes["items"].Values["default"] == (object)"blah");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "items", "blah", ValuePredicateType.Equal);
        }
Exemple #9
0
        public void CallingWithParentIdsSetsParentIds()
        {
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context        = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var parentId       = new HiveId(Guid.NewGuid());
            var query          = context.WithParentIds(parentId).ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            Assert.That(generatedQuery.From.HierarchyScope, Is.EqualTo(HierarchyScope.Children));
            Assert.That(generatedQuery.From.HierarchyType, Is.EqualTo(FixedRelationTypes.DefaultRelationType.RelationName));
            Assert.True(generatedQuery.From.ScopeStartIds.Any());
            Assert.That(generatedQuery.From.ScopeStartIds.Count(), Is.EqualTo(1));
            Assert.True(generatedQuery.From.ScopeStartIds.Contains(parentId));
        }
Exemple #10
0
        public void WhenRevisionStatusIsGiven_FromClauseRevisionStatus_IsCorrect()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.OfRevisionType("Draft");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            Assert.That(generatedQuery.From.RevisionStatus, Is.EqualTo("Draft"));
        }
Exemple #11
0
        public void ContentViewModel_NumberField_LessThanOrEqualToOperator()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContentContext(nullQueryableDataSource);
            var query   = context.Where(x => x.NumberField("items") <= 2);

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "items", 2, ValuePredicateType.LessThanOrEqual);
        }
Exemple #12
0
        public void WhenRevisionStatusIsNotGiven_FromClauseRevisionStatus_IsPublished()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Where(x => x.Attribute <string>("whatever") == "blah");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            Assert.That(generatedQuery.From.RevisionStatus, Is.EqualTo(FromClause.RevisionStatusNotSpecified));
        }
Exemple #13
0
        public void TypedEntity_ComplexBinary_IncludingSchemaAlias()
        {
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContentContext(nullQueryableDataSource);
            var query   = context.Where(x => x.EntitySchema.Alias == "analias" && (x.Attribute <int>("number") != 1 && x.Attribute <bool>("boolean") == false));

            // Cause execution
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "number", 1, ValuePredicateType.NotEqual);
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "boolean", false, ValuePredicateType.Equal);
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "Alias", "analias", ValuePredicateType.Equal);
        }
Exemple #14
0
        public void ContentViewModel_ContentType_Alias_NotEqualOperator()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContentContext(nullQueryableDataSource);
            var query   = context.Where(x => x.ContentType.Alias != "NewsItem");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "Alias", "NewsItem", ValuePredicateType.NotEqual);
        }
Exemple #15
0
        public void ContentViewModel_FieldCastAsString_Equals()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContentContext(nullQueryableDataSource);
            var query   = context.Where(x => (string)x.Field("bodyText") == "frank");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "bodyText", "frank", ValuePredicateType.Equal);
        }
Exemple #16
0
        public void ContentViewModel_FieldOfString_StartsWith()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContentContext(nullQueryableDataSource);
            var query   = context.Where(x => x.Field <string>("bodyText").StartsWith("frank"));

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "bodyText", "frank", ValuePredicateType.StartsWith);
        }
Exemple #17
0
        public void ContentViewModel_StringField_NotEqualsMethod_ViaUnaryExpression()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContentContext(nullQueryableDataSource);
            var query   = context.Where(x => !x.StringField("bodyText").Equals("frank"));

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "bodyText", "frank", ValuePredicateType.NotEqual);
        }
Exemple #18
0
        public void ContentViewModel_StringField_EqualsOperator_AndAlso_StringField_NotEqualsOperator()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContentContext(nullQueryableDataSource);
            var query   = context.Where(x => x.StringField("bodyText") == "frank" && x.StringField("title") != "bob");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "bodyText", "frank", ValuePredicateType.Equal);
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "title", "bob", ValuePredicateType.NotEqual);
        }
Exemple #19
0
        public void ContentViewModel_UtcCreated_SinglePredicateRange()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context  = GenerateContentContext(nullQueryableDataSource);
            var dateTime = DateTimeOffset.Now;
            var query    = context.Where(x => x.UtcCreated <= dateTime && x.UtcCreated >= dateTime);

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "UtcCreated", dateTime, ValuePredicateType.GreaterThanOrEqual);
        }
Exemple #20
0
        public void UserGroup_WithDefaultSchemaForQueryingAttribute_Equals()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <UserGroup>(nullQueryableDataSource);
            var query   = context.Where(x => x.Attributes["items"].Values["default"] == (object)"blah");

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "Alias", UserGroupSchema.SchemaAlias, ValuePredicateType.Equal);
            AssertingCriteriaVisitor.Check(generatedQuery.Criteria, "items", "blah", ValuePredicateType.Equal);
        }
Exemple #21
0
        public void WhenOrderByDescendingIsSpecified_SortClauseIsPopulated()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.OrderByDescending(x => x.Attribute <string>("title"));

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            Assert.That(generatedQuery.SortClauses.Any());
            var firstSortClause = generatedQuery.SortClauses.FirstOrDefault();

            Assert.That(firstSortClause.Direction, Is.EqualTo(SortDirection.Descending));
            Assert.That(firstSortClause.FieldSelector.FieldName, Is.EqualTo("title"));
        }
Exemple #22
0
        public void WhenTakeIsUsed_ResultFilterType_IsTake()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.Take(5);

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            // Assert
            var resultFilterClause = generatedQuery.ResultFilters.Single();

            Assert.That(resultFilterClause.ResultFilterType, Is.EqualTo(ResultFilterType.Take));
            Assert.That(resultFilterClause.SelectorArgument, Is.EqualTo(0));
            Assert.That(resultFilterClause.TakeCount, Is.EqualTo(5));
            Assert.That(resultFilterClause.SkipCount, Is.EqualTo(0));
        }
Exemple #23
0
        public void WhenOrderThenByOrderIsSpecified_SortClausesArePopulated()
        {
            // Arrange
            var nullQueryableDataSource = new NullQueryableDataSource();
            var context = GenerateContext <TypedEntity>(nullQueryableDataSource);
            var query   = context.OrderBy(x => x.Attribute <string>("title")).ThenBy(x => x.Attribute <string>("subtitle"));

            // Act
            query.ToList();
            var generatedQuery = nullQueryableDataSource.GeneratedQueryDescription;

            Assert.That(generatedQuery.SortClauses.Count(), Is.EqualTo(2));
            var firstSortClause = generatedQuery.SortClauses.FirstOrDefault();

            Assert.That(firstSortClause.Direction, Is.EqualTo(SortDirection.Ascending));
            Assert.That(firstSortClause.FieldSelector.FieldName, Is.EqualTo("title"));
            Assert.That(firstSortClause.Priority, Is.EqualTo(0));

            var secondSortClause = generatedQuery.SortClauses.Skip(1).FirstOrDefault();

            Assert.That(secondSortClause.Direction, Is.EqualTo(SortDirection.Ascending));
            Assert.That(secondSortClause.FieldSelector.FieldName, Is.EqualTo("subtitle"));
            Assert.That(secondSortClause.Priority, Is.EqualTo(1));
        }
Exemple #24
0
 private static Queryable <T> GenerateContext <T>(NullQueryableDataSource nullQueryableDataSource)
 {
     return(new Queryable <T>(new Executor(nullQueryableDataSource, null), CustomQueryParser.CreateDefault()));
 }