Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use JSON-style string escaping #352

Merged
merged 1 commit into from
Aug 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,7 @@ where string.Compare(g.Key, "N") >= 0
"FROM `default` as `Extent1` " +
"INNER JOIN `default` as `Extent2` ON (`Extent1`.`brewery_id` = META(`Extent2`).id) " +
"GROUP BY `Extent2`.`name` " +
"HAVING (`Extent2`.`name` >= 'N')";
"HAVING (`Extent2`.`name` >= \"N\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public void Test_ArrayContains()
QueryFactory.Queryable<DocumentWithArray>(mockBucket.Object)
.Where(e => e.Array.Contains("abc"));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE 'abc' IN (`Extent1`.`Array`)";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE \"abc\" IN (`Extent1`.`Array`)";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -41,7 +41,7 @@ public void Test_ListContains()
QueryFactory.Queryable<DocumentWithIList>(mockBucket.Object)
.Where(e => e.List.Contains("abc"));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE 'abc' IN (`Extent1`.`List`)";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE \"abc\" IN (`Extent1`.`List`)";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -61,7 +61,7 @@ public void Test_StaticArrayContains()
QueryFactory.Queryable<Beer>(mockBucket.Object)
.Where(e => staticArray.Contains(e.Name));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE `Extent1`.`name` IN (['abc', 'def'])";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE `Extent1`.`name` IN ([\"abc\", \"def\"])";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -81,7 +81,7 @@ public void Test_AlteredStaticArrayContains()
QueryFactory.Queryable<Beer>(mockBucket.Object)
.Where(e => staticArray.Select(p => "a" + p).Contains(e.Name));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE `Extent1`.`name` IN (ARRAY ('a' || `Extent2`) FOR `Extent2` IN ['abc', 'def'] END)";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE `Extent1`.`name` IN (ARRAY (\"a\" || `Extent2`) FOR `Extent2` IN [\"abc\", \"def\"] END)";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -101,7 +101,7 @@ public void Test_StaticListContains()
QueryFactory.Queryable<Beer>(mockBucket.Object)
.Where(e => staticArray.Contains(e.Name));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE `Extent1`.`name` IN (['abc', 'def'])";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE `Extent1`.`name` IN ([\"abc\", \"def\"])";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -120,7 +120,7 @@ public void Test_ArrayAny()
QueryFactory.Queryable<Brewery>(mockBucket.Object)
.Where(e => e.Beers.Any(p => p == "test"));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE ANY `Extent2` IN `Extent1`.`beers` SATISFIES (`Extent2` = 'test') END";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE ANY `Extent2` IN `Extent1`.`beers` SATISFIES (`Extent2` = \"test\") END";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -139,7 +139,7 @@ public void Test_StringSplitAny()
QueryFactory.Queryable<Beer>(mockBucket.Object)
.Where(e => e.Name.Split().Any(p => p == "test"));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE ANY `Extent2` IN SPLIT(`Extent1`.`name`) SATISFIES (`Extent2` = 'test') END";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE ANY `Extent2` IN SPLIT(`Extent1`.`name`) SATISFIES (`Extent2` = \"test\") END";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -158,7 +158,7 @@ public void Test_StringSplitTwoParamAny()
QueryFactory.Queryable<Beer>(mockBucket.Object)
.Where(e => e.Name.Split(new[] {' '}).Any(p => p == "test"));

const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE ANY `Extent2` IN SPLIT(`Extent1`.`name`, ' ') SATISFIES (`Extent2` = 'test') END";
const string expected = "SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE ANY `Extent2` IN SPLIT(`Extent1`.`name`, \" \") SATISFIES (`Extent2` = \"test\") END";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ public void Test_StringAddition()
.Select(e => new { name = e.FirstName + " " + e.LastName });

const string expected =
"SELECT ((`Extent1`.`fname` || ' ') || `Extent1`.`lname`) as `name` FROM `default` as `Extent1`";
"SELECT ((`Extent1`.`fname` || \" \") || `Extent1`.`lname`) as `name` FROM `default` as `Extent1`";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -337,7 +337,7 @@ public void Test_StringAdditionNonString()
.Select(e => new { key = "constant-" + e.Age });

const string expected =
"SELECT ('constant-' || `Extent1`.`age`) as `key` FROM `default` as `Extent1`";
"SELECT (\"constant-\" || `Extent1`.`age`) as `key` FROM `default` as `Extent1`";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -355,7 +355,7 @@ public void Test_StringConcat()
.Select(e => new { name = String.Concat(e.FirstName, " ", e.LastName) });

const string expected =
"SELECT (`Extent1`.`fname` || ' ' || `Extent1`.`lname`) as `name` FROM `default` as `Extent1`";
"SELECT (`Extent1`.`fname` || \" \" || `Extent1`.`lname`) as `name` FROM `default` as `Extent1`";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -373,7 +373,7 @@ public void Test_StringConcatArray()
.Select(e => new { name = String.Concat(new[] {e.FirstName, " ", e.LastName}) });

const string expected =
"SELECT (`Extent1`.`fname` || ' ' || `Extent1`.`lname`) as `name` FROM `default` as `Extent1`";
"SELECT (`Extent1`.`fname` || \" \" || `Extent1`.`lname`) as `name` FROM `default` as `Extent1`";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -391,7 +391,7 @@ public void Test_StringConcatFiveParameters()
.Select(e => new { name = String.Concat(e.FirstName, " ", e.LastName, " ", "suffix") });

const string expected =
"SELECT (`Extent1`.`fname` || ' ' || `Extent1`.`lname` || ' ' || 'suffix') as `name` FROM `default` as `Extent1`";
"SELECT (`Extent1`.`fname` || \" \" || `Extent1`.`lname` || \" \" || \"suffix\") as `name` FROM `default` as `Extent1`";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,25 @@ public void Test_String()
.Where(e => e.FirstName != "Test");

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`fname` != 'Test')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`fname` != \"Test\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Assert.AreEqual(expected, n1QlQuery);
}

[Test]
public void Test_EscapedString()
{
var mockBucket = new Mock<IBucket>();
mockBucket.SetupGet(e => e.Name).Returns("default");

var query =
QueryFactory.Queryable<Contact>(mockBucket.Object)
.Where(e => e.FirstName != "Test\\\"This");

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`fname` != \"Test\\\\\\\"This\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down
36 changes: 18 additions & 18 deletions Src/Couchbase.Linq.UnitTests/QueryGeneration/EnumTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ public void Test_StringEnumConverter_WhereEqual()
.Where(p => p.Value == StringEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -222,7 +222,7 @@ public void Test_StringEnumConverter_WhereEqualReversed()
.Where(p => StringEnum.Value0 == p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -239,7 +239,7 @@ public void Test_StringEnumConverter_WhereNotEqual()
.Where(p => p.Value != StringEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -256,7 +256,7 @@ public void Test_StringEnumConverter_WhereEqualToValueWithEnumMemberAttribute()
.Where(p => p.Value == StringEnum.Value1);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value 1')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value 1\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -273,7 +273,7 @@ public void Test_StringEnumConverter_WhereNotEqualReversed()
.Where(p => StringEnum.Value0 != p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -294,7 +294,7 @@ public void Test_StringEnumConverterOnNullable_WhereEqual()
.Where(p => p.Value == StringEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down Expand Up @@ -328,7 +328,7 @@ public void Test_StringEnumConverterOnNullable_WhereEqualReversed()
.Where(p => StringEnum.Value0 == p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -345,7 +345,7 @@ public void Test_StringEnumConverterOnNullable_WhereNotEqual()
.Where(p => p.Value != StringEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down Expand Up @@ -379,7 +379,7 @@ public void Test_StringEnumConverterOnNullable_WhereNotEqualReversed()
.Where(p => StringEnum.Value0 != p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -400,7 +400,7 @@ public void Test_StringEnumConverterOnProperty_WhereEqual()
.Where(p => p.Value == IntegerEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -417,7 +417,7 @@ public void Test_StringEnumConverterOnProperty_WhereEqualReversed()
.Where(p => IntegerEnum.Value0 == p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -434,7 +434,7 @@ public void Test_StringEnumConverterOnProperty_WhereNotEqual()
.Where(p => p.Value != IntegerEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -451,7 +451,7 @@ public void Test_StringEnumConverterOnProperty_WhereEqualToValueWithEnumMemberAt
.Where(p => p.Value == IntegerEnum.Value2);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value 2')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value 2\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -468,7 +468,7 @@ public void Test_StringEnumConverterOnProperty_WhereNotEqualReversed()
.Where(p => IntegerEnum.Value0 != p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -489,7 +489,7 @@ public void Test_StringEnumConverterOnPropertyNullable_WhereEqual()
.Where(p => p.Value == IntegerEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down Expand Up @@ -523,7 +523,7 @@ public void Test_StringEnumConverterOnPropertyNullable_WhereEqualReversed()
.Where(p => IntegerEnum.Value0 == p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` = \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand All @@ -540,7 +540,7 @@ public void Test_StringEnumConverterOnPropertyNullable_WhereNotEqual()
.Where(p => p.Value != IntegerEnum.Value0);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down Expand Up @@ -574,7 +574,7 @@ public void Test_StringEnumConverterOnPropertyNullable_WhereNotEqualReversed()
.Where(p => IntegerEnum.Value0 != p.Value);

const string expected =
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != 'Value0')";
"SELECT RAW `Extent1` FROM `default` as `Extent1` WHERE (`Extent1`.`Value` != \"Value0\")";

var n1QlQuery = CreateN1QlQuery(mockBucket.Object, query.Expression);

Expand Down
8 changes: 4 additions & 4 deletions Src/Couchbase.Linq.UnitTests/QueryGeneration/HintTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public void Test_UseIndex()

const string expected = "SELECT RAW `Extent1` " +
"FROM `default` as `Extent1` USE INDEX (`IndexName` USING GSI) " +
"WHERE (`Extent1`.`type` = 'contact')";
"WHERE (`Extent1`.`type` = \"contact\")";

Assert.AreEqual(expected, n1QlQuery);
}
Expand Down Expand Up @@ -55,7 +55,7 @@ public void Test_UseIndexWithType()

const string expected = "SELECT RAW `Extent1` " +
"FROM `default` as `Extent1` USE INDEX (`IndexName` USING VIEW) " +
"WHERE (`Extent1`.`type` = 'contact')";
"WHERE (`Extent1`.`type` = \"contact\")";

Assert.AreEqual(expected, n1QlQuery);
}
Expand All @@ -71,7 +71,7 @@ public void Test_UseIndex_Any()

const string expected = "SELECT true as result " +
"FROM `default` as `Extent1` USE INDEX (`IndexName` USING GSI) " +
"WHERE (`Extent1`.`type` = 'contact') " +
"WHERE (`Extent1`.`type` = \"contact\") " +
"LIMIT 1";

Assert.AreEqual(expected, n1QlQuery);
Expand All @@ -88,7 +88,7 @@ public void Test_UseIndexWithType_Any()

const string expected = "SELECT true as result " +
"FROM `default` as `Extent1` USE INDEX (`IndexName` USING VIEW) " +
"WHERE (`Extent1`.`type` = 'contact') " +
"WHERE (`Extent1`.`type` = \"contact\") " +
"LIMIT 1";

Assert.AreEqual(expected, n1QlQuery);
Expand Down
Loading