public void ExpressionWhereInIEnumerable() { IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string[] orderNumbers = { "5", "10", "15" }; Expression <Func <Order, bool> > expression = x => x.OrderNumber.In(orderNumbers); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("orderNumber in (\"5\", \"10\", \"15\")", result); var orderNumberList = new List <string> { "5", "10", "15" }.Where(s => s != "10").Select(s => s); Expression <Func <Order, bool> > expression2 = x => x.OrderNumber.In(orderNumberList); string result2 = queryPredicateExpressionVisitor.Render(expression2); Assert.Equal("orderNumber in (\"5\", \"15\")", result2); var linqQuery = from orderNumber in new List <string> { "5", "10", "15" } where orderNumber != "5" select orderNumber; Expression <Func <Order, bool> > expression3 = x => x.OrderNumber.In(linqQuery); string result3 = queryPredicateExpressionVisitor.Render(expression3); Assert.Equal("orderNumber in (\"10\", \"15\")", result3); }
public void ExpressionPropertyIsDefined() { Expression <Func <Category, bool> > expression = c => c.Key.IsDefined(); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("key is defined", result); }
public void ExpressionEnumWhereInArrayInline() { Expression <Func <Order, bool> > expression = x => x.OrderState.In(new[] { OrderState.Open, OrderState.Complete, OrderState.Confirmed }); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("orderState in (\"Open\", \"Complete\", \"Confirmed\")", result); }
public void ExpressionEvaluationWithStaticFields() { Expression <Func <Customer, bool> > expression = x => x.Id == CustomerId; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("id = \"59e22bf2-d5f5-4b8c-b78f-bb66cf28d4fe\"", result); }
public void QueryNestedComparison() { Expression <Func <Product, bool> > expression = p => p.MasterData.Current.Categories.Any(reference => reference.Id == "test"); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("masterData(current(categories(id = \"test\")))", result); }
public void QueryNestedInCombination() { Expression <Func <Product, bool> > expression = p => p.MasterData.Current.MasterVariant.Key.In("test") && p.MasterData.Current.MasterVariant.Sku.In("test"); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("masterData(current(masterVariant(key in (\"test\") and sku in (\"test\"))))", result); }
public void QueryInList() { Expression <Func <ProductProjection, bool> > expression = p => p.Categories.Any(reference => reference.Id.In("test")); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("categories(id in (\"test\"))", result); }
public void ExpressionProjectionPropertyForMissingAttribute() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => !variant.Attributes.Any(a => a.ToTextAttribute().Name == "attribute-name")); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(not(attributes(name = \"attribute-name\")))", result); }
public void ExpressionPropertyDateAttributeValueParseEqual() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToDateAttribute().Name == "C-Date" && a.ToDateAttribute().Value == DateTime.Parse("2019-10-11", CultureInfo.InvariantCulture).AsDateAttribute())); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"C-Date\" and value = \"2019-10-11\"))", result); }
public void ExpressionPropertyNumberAttributeValueWithinRange() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToNumberAttribute().Name == "attribute-name" && a.ToNumberAttribute().Value > 999 && a.ToNumberAttribute().Value < 1001)); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"attribute-name\" and value > 999 and value < 1001))", result); }
public void ExpressionPropertyMoneyAttributeValueEqual() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToMoneyAttribute().Name == "attribute-name" && a.ToMoneyAttribute().Value.CentAmount == 999 && a.ToMoneyAttribute().Value.CurrencyCode == "EUR")); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"attribute-name\" and value(centAmount = 999) and value(currencyCode = \"EUR\")))", result); }
public void ExpressionPropertyThreeLevelDictionaryEqual() { Expression <Func <Product, bool> > expression = p => p.MasterData.Current.Slug["en"] == "product"; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("masterData(current(slug(en = \"product\")))", result); }
public void ExpressionPropertyDictionaryEqual() { Expression <Func <Category, bool> > expression = c => c.Name["en"] == "men"; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("name(en = \"men\")", result); }
public void ExpressionPropertyContainsAllString() { Expression <Func <Customer, bool> > expression = c => c.ShippingAddressIds.ContainsAll("c14", "c15"); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("shippingAddressIds contains all (\"c14\", \"c15\")", result); }
public void ExpressionPropertyNotInString() { Expression <Func <Category, bool> > expression = c => c.Key.NotIn("c14", "c15"); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("key not in (\"c14\", \"c15\")", result); }
public void WithinCircle() { Expression <Func <Channel, bool> > expression = c => c.GeoLocation.WithinCircle(13.37774, 52.51627, 1000);//longitude, latitude, radius IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("geoLocation within circle(13.37774, 52.51627, 1000)", result); }
public void ExpressionProjectionPropertyLocalizedTextAttributeValueEqualGrouped() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToLocalizedTextAttribute().Name == "text-name" && (a.ToLocalizedTextAttribute().Value["en"] == "text-value-en" || a.ToLocalizedTextAttribute().Value["de"] == "text-value-de"))); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"text-name\" and value(en = \"text-value-en\" or de = \"text-value-de\")))", result); }
public void ExpressionPropertyTimeAttributeValueParseEqual() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToTimeAttribute().Name == "C-Time" && a.ToTimeAttribute().Value == DateTime.Parse("2019-10-11T15:33:11.123+02:00", CultureInfo.GetCultureInfo("de-DE"), DateTimeStyles.AdjustToUniversal).TimeOfDay.AsTimeAttribute()));//utc time IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"C-Time\" and value = \"13:33:11.123\"))", result); }
public void ExpressionProjectionPropertyTextAttributeValueIn() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToTextAttribute().Name == "attribute-name" && a.ToTextAttribute().Value.In("attribute-value-1", "attribute-value-2"))); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"attribute-name\" and value in (\"attribute-value-1\", \"attribute-value-2\")))", result); }
public void ExpressionPropertyReferenceTypeAttributeValueEqual() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToReferenceAttribute().Name == "attribute-name" && a.ToReferenceAttribute().Value.TypeId == ReferenceTypeId.Category && a.ToReferenceAttribute().Value.Id == "963cbb75-c604-4ad2-841c-890b792224ee")); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"attribute-name\" and value(typeId = \"category\") and value(id = \"963cbb75-c604-4ad2-841c-890b792224ee\")))", result); }
public void QueryNestedCombine() { Expression <Func <Product, bool> > expression = p => p.MasterData.Current.MasterVariant.Key == "test" && p.MasterData.Current.MasterVariant.Sku == "something"; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("masterData(current(masterVariant(key = \"test\" and sku = \"something\")))", result); }
public void ExpressionPropertyTextAttributeValueEqualCaseSensitive() { Expression <Func <ProductVariant, bool> > expression = p => p.Attributes.Any(a => a.ToTextAttribute().Name == "Color" && a.ToTextAttribute().Value == "Red"); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("attributes(name = \"Color\" and value = \"Red\")", result); }
public void QueryNestedDefined() { Expression <Func <Product, bool> > expression = p => p.MasterData.Current.MasterVariant.Key.IsDefined(); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("masterData(current(masterVariant(key is defined)))", result); }
public void ExpressionPropertyTextAttributeCastValueEqual() { Expression <Func <ProductVariant, bool> > expression = p => p.Attributes.Any(a => ((TextAttribute)a).Name == "text-name" && ((TextAttribute)a).Value == "text-value"); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("attributes(name = \"text-name\" and value = \"text-value\")", result); }
public void ExpressionImplicitEqualFalse() { Expression <Func <Product, bool> > expression = p => !p.MasterData.Published; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("masterData(published = false)", result); }
public void ExpressionPropertyLocalizedTextAttributeValueEqual() { Expression <Func <ProductVariant, bool> > expression = p => p.Attributes.Any(a => a.ToLocalizedTextAttribute().Name == "text-name" && a.ToLocalizedTextAttribute().Value["en"] == "text-value-en"); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("attributes(name = \"text-name\" and value(en = \"text-value-en\"))", result); }
public void ExpressionProductProjectionVariantEnumAttributeValueEqual() { Expression <Func <ProductProjection, bool> > expression = p => p.Variants.Any(variant => variant.Attributes.Any(a => a.ToEnumAttribute().Name == "attribute-name" && a.ToEnumAttribute().Value.Key == "enum-key")); IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("variants(attributes(name = \"attribute-name\" and value(key = \"enum-key\")))", result); }
public void ExpressionPropertyPropertyGrouping() { Expression <Func <Category, bool> > expression = c => c.Parent.Id == "some id" || c.Parent.Id == "some other id"; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("parent(id = \"some id\" or id = \"some other id\")", result); }
public void ExpressionStringOr() { Expression <Func <Category, bool> > expression = c => c.Key != "c14" || c.Version == 30; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("key != \"c14\" or version = 30", result); }
public void ExpressionPropertyTwoLevelIntLessThan() { Expression <Func <ProductData, bool> > expression = p => p.MasterVariant.Id < 30; IQueryPredicateExpressionVisitor queryPredicateExpressionVisitor = this.linqFixture.GetService <IQueryPredicateExpressionVisitor>(); string result = queryPredicateExpressionVisitor.Render(expression); Assert.Equal("masterVariant(id < 30)", result); }