Browse Source

Mongo Query fixed

pull/65/head
Sebastian Stehle 9 years ago
parent
commit
cfa8e64fea
  1. 5
      src/Squidex.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs
  2. 32
      tests/Squidex.Read.Tests/MongoDb/Contents/ODataQueryTests.cs

5
src/Squidex.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs

@ -37,10 +37,7 @@ namespace Squidex.Read.MongoDb.Contents.Visitors
propertyNames[1] = field.Id.ToString(); propertyNames[1] = field.Id.ToString();
} }
if (char.IsLower(propertyNames[0][0])) propertyNames[0] = "do";
{
propertyNames[0] = char.ToUpperInvariant(propertyNames[0][0]) + propertyNames[0].Substring(1);
}
var propertyName = string.Join(".", propertyNames); var propertyName = string.Join(".", propertyNames);

32
tests/Squidex.Read.Tests/MongoDb/Contents/ODataQueryTests.cs

@ -82,7 +82,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_not_operator() public void Should_create_not_operator()
{ {
var i = F("$filter=not endswith(data/firstName/de, 'Sebastian')"); var i = F("$filter=not endswith(data/firstName/de, 'Sebastian')");
var o = C("{ 'Data.1.de' : { '$not' : /Sebastian$/i } }"); var o = C("{ 'do.1.de' : { '$not' : /Sebastian$/i } }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -91,7 +91,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_starts_with_query() public void Should_create_starts_with_query()
{ {
var i = F("$filter=startswith(data/firstName/de, 'Sebastian')"); var i = F("$filter=startswith(data/firstName/de, 'Sebastian')");
var o = C("{ 'Data.1.de' : /^Sebastian/i }"); var o = C("{ 'do.1.de' : /^Sebastian/i }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -100,7 +100,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_ends_with_query() public void Should_create_ends_with_query()
{ {
var i = F("$filter=endswith(data/firstName/de, 'Sebastian')"); var i = F("$filter=endswith(data/firstName/de, 'Sebastian')");
var o = C("{ 'Data.1.de' : /Sebastian$/i }"); var o = C("{ 'do.1.de' : /Sebastian$/i }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -109,7 +109,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_contains_query() public void Should_create_contains_query()
{ {
var i = F("$filter=contains(data/firstName/de, 'Sebastian')"); var i = F("$filter=contains(data/firstName/de, 'Sebastian')");
var o = C("{ 'Data.1.de' : /Sebastian/i }"); var o = C("{ 'do.1.de' : /Sebastian/i }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -118,7 +118,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_string_equals_query() public void Should_create_string_equals_query()
{ {
var i = F("$filter=data/firstName/de eq 'Sebastian'"); var i = F("$filter=data/firstName/de eq 'Sebastian'");
var o = C("{ 'Data.1.de' : 'Sebastian' }"); var o = C("{ 'do.1.de' : 'Sebastian' }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -127,7 +127,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_datetime_equals_query() public void Should_create_datetime_equals_query()
{ {
var i = F("$filter=data/birthday/iv eq 1988-01-19T12:00:00Z"); var i = F("$filter=data/birthday/iv eq 1988-01-19T12:00:00Z");
var o = C("{ 'Data.5.iv' : ISODate(\"1988-01-19T12:00:00Z\") }"); var o = C("{ 'do.5.iv' : ISODate(\"1988-01-19T12:00:00Z\") }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -136,7 +136,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_boolean_equals_query() public void Should_create_boolean_equals_query()
{ {
var i = F("$filter=data/isAdmin/iv eq true"); var i = F("$filter=data/isAdmin/iv eq true");
var o = C("{ 'Data.3.iv' : true }"); var o = C("{ 'do.3.iv' : true }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -145,7 +145,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_string_not_equals_query() public void Should_create_string_not_equals_query()
{ {
var i = F("$filter=data/firstName/de ne 'Sebastian'"); var i = F("$filter=data/firstName/de ne 'Sebastian'");
var o = C("{ 'Data.1.de' : { '$ne' : 'Sebastian' } }"); var o = C("{ 'do.1.de' : { '$ne' : 'Sebastian' } }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -154,7 +154,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_number_less_than_query() public void Should_create_number_less_than_query()
{ {
var i = F("$filter=data/age/iv lt 1"); var i = F("$filter=data/age/iv lt 1");
var o = C("{ 'Data.4.iv' : { '$lt' : 1.0 } }"); var o = C("{ 'do.4.iv' : { '$lt' : 1.0 } }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -163,7 +163,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_number_less_equals_query() public void Should_create_number_less_equals_query()
{ {
var i = F("$filter=data/age/iv le 1"); var i = F("$filter=data/age/iv le 1");
var o = C("{ 'Data.4.iv' : { '$lte' : 1.0 } }"); var o = C("{ 'do.4.iv' : { '$lte' : 1.0 } }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -172,7 +172,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_number_greater_than_query() public void Should_create_number_greater_than_query()
{ {
var i = F("$filter=data/age/iv gt 1"); var i = F("$filter=data/age/iv gt 1");
var o = C("{ 'Data.4.iv' : { '$gt' : 1.0 } }"); var o = C("{ 'do.4.iv' : { '$gt' : 1.0 } }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -181,7 +181,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_number_greater_equals_query() public void Should_create_number_greater_equals_query()
{ {
var i = F("$filter=data/age/iv ge 1"); var i = F("$filter=data/age/iv ge 1");
var o = C("{ 'Data.4.iv' : { '$gte' : 1.0 } }"); var o = C("{ 'do.4.iv' : { '$gte' : 1.0 } }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -190,7 +190,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_and_query() public void Should_create_and_query()
{ {
var i = F("$filter=data/age/iv eq 1 and data/age/iv eq 2"); var i = F("$filter=data/age/iv eq 1 and data/age/iv eq 2");
var o = C("{ '$and' : [{ 'Data.4.iv' : 1.0 }, { 'Data.4.iv' : 2.0 }] }"); var o = C("{ '$and' : [{ 'do.4.iv' : 1.0 }, { 'do.4.iv' : 2.0 }] }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -199,7 +199,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_create_or_query() public void Should_create_or_query()
{ {
var i = F("$filter=data/age/iv eq 1 or data/age/iv eq 2"); var i = F("$filter=data/age/iv eq 1 or data/age/iv eq 2");
var o = C("{ '$or' : [{ 'Data.4.iv' : 1.0 }, { 'Data.4.iv' : 2.0 }] }"); var o = C("{ '$or' : [{ 'do.4.iv' : 1.0 }, { 'do.4.iv' : 2.0 }] }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -226,7 +226,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_convert_orderby_with_single_statements() public void Should_convert_orderby_with_single_statements()
{ {
var i = S("$orderby=data/age/iv desc"); var i = S("$orderby=data/age/iv desc");
var o = C("{ 'Data.4.iv' : -1 }"); var o = C("{ 'do.4.iv' : -1 }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }
@ -235,7 +235,7 @@ namespace Squidex.Read.MongoDb.Contents
public void Should_convert_orderby_with_multiple_statements() public void Should_convert_orderby_with_multiple_statements()
{ {
var i = S("$orderby=data/age/iv, data/firstName/en desc"); var i = S("$orderby=data/age/iv, data/firstName/en desc");
var o = C("{ 'Data.4.iv' : 1, 'Data.1.en' : -1 }"); var o = C("{ 'do.4.iv' : 1, 'do.1.en' : -1 }");
Assert.Equal(o, i); Assert.Equal(o, i);
} }

Loading…
Cancel
Save