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); }
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)); }
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)); }
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)); }
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); }
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); }
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"); }
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); }
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)); }
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")); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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")); }
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)); }
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)); }
private static Queryable <T> GenerateContext <T>(NullQueryableDataSource nullQueryableDataSource) { return(new Queryable <T>(new Executor(nullQueryableDataSource, null), CustomQueryParser.CreateDefault())); }