未验证 提交 4de9b541 编写于 作者: S Shay Rojansky 提交者: GitHub

JSON test cleanup (#2370)

上级 22748814
......@@ -53,6 +53,7 @@ public void Literal_document()
Assert.Empty(ctx.JsonbEntities.Where(e => e.CustomerDocument == JsonDocument.Parse(@"
{ ""Name"": ""Test customer"", ""Age"": 80 }", default)));
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -63,10 +64,12 @@ public void Literal_document()
public void Parameter_document()
{
using var ctx = CreateContext();
var expected = ctx.JsonbEntities.Find(1).CustomerDocument;
var actual = ctx.JsonbEntities.Single(e => e.CustomerDocument == expected).CustomerDocument;
Assert.Equal(actual, expected);
AssertSql(
@"@__p_0='1'
......@@ -87,10 +90,12 @@ public void Parameter_document()
public void Parameter_element()
{
using var ctx = CreateContext();
var expected = ctx.JsonbEntities.Find(1).CustomerElement;
var actual = ctx.JsonbEntities.Single(e => e.CustomerElement.Equals(expected)).CustomerElement;
Assert.Equal(actual, expected);
AssertSql(
@"@__p_0='1'
......@@ -111,9 +116,11 @@ public void Parameter_element()
public void Text_output_on_document()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerDocument.RootElement.GetProperty("Name").GetString() == "Joe");
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -125,9 +132,11 @@ public void Text_output_on_document()
public void Text_output()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("Name").GetString() == "Joe");
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -139,9 +148,11 @@ public void Text_output()
public void Text_output_json()
{
using var ctx = CreateContext();
var x = ctx.JsonEntities.Single(e => e.CustomerElement.GetProperty("Name").GetString() == "Joe");
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonEntities"" AS j
......@@ -153,9 +164,11 @@ public void Text_output_json()
public void Integer_output()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("Age").GetInt32() < 30);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -167,9 +180,11 @@ public void Integer_output()
public void Guid_output()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("ID").GetGuid() == Guid.Empty);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -181,9 +196,11 @@ public void Guid_output()
public void Bool_output()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("IsVip").GetBoolean());
Assert.Equal("Moe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -195,9 +212,11 @@ WHERE CAST(j.""CustomerElement""->>'IsVip' AS boolean)
public void Nested()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("Statistics").GetProperty("Visits").GetInt64() == 4);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -209,8 +228,10 @@ public void Nested()
public void Nested_twice()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("Statistics").GetProperty("Nested").GetProperty("SomeProperty").GetInt32() == 10);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
......@@ -223,9 +244,11 @@ public void Nested_twice()
public void Array_of_objects()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("Orders")[0].GetProperty("Price").GetDecimal() == 99.5m);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -237,10 +260,12 @@ public void Array_of_objects()
public void Array_nested()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e =>
e.CustomerElement.GetProperty("Statistics").GetProperty("Nested").GetProperty("IntArray")[1].GetInt32() == 4);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -252,11 +277,13 @@ public void Array_nested()
public void Array_parameter_index()
{
using var ctx = CreateContext();
var i = 1;
var x = ctx.JsonbEntities.Single(e =>
e.CustomerElement.GetProperty("Statistics").GetProperty("Nested").GetProperty("IntArray")[i].GetInt32() == 4);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"@__i_0='1'
......@@ -270,9 +297,11 @@ public void Array_parameter_index()
public void GetArrayLength()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("Orders").GetArrayLength() == 2);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -284,9 +313,11 @@ public void GetArrayLength()
public void GetArrayLength_json()
{
using var ctx = CreateContext();
var x = ctx.JsonEntities.Single(e => e.CustomerElement.GetProperty("Orders").GetArrayLength() == 2);
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonEntities"" AS j
......@@ -298,9 +329,11 @@ public void GetArrayLength_json()
public void Like()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.CustomerElement.GetProperty("Name").GetString().StartsWith("J"));
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -312,11 +345,13 @@ public void Like()
public void Where_nullable_guid()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e =>
e.CustomerElement.GetProperty("Statistics").GetProperty("Nested").GetProperty("SomeNullableGuid").GetGuid()
== Guid.Parse("d5f2685d-e5c4-47e5-97aa-d0266154eb2d"));
Assert.Equal("Joe", x.CustomerElement.GetProperty("Name").GetString());
AssertSql(
@"SELECT j.""Id"", j.""CustomerDocument"", j.""CustomerElement""
FROM ""JsonbEntities"" AS j
......@@ -328,6 +363,7 @@ public void Where_nullable_guid()
public void Where_root_value()
{
using var ctx = CreateContext();
_ = ctx.JsonbEntities.Single(e => e.CustomerElement.GetString() == "foo");
AssertSql(
......@@ -612,4 +648,4 @@ public class JsonDomQueryFixture : SharedStoreFixtureBase<JsonDomQueryContext>
}
#endregion
}
\ No newline at end of file
}
......@@ -54,10 +54,12 @@ public void Literal()
public void Parameter()
{
using var ctx = CreateContext();
var expected = ctx.JsonbEntities.Find(1).Customer;
var actual = ctx.JsonbEntities.Single(e => e.Customer == expected).Customer;
Assert.Equal(actual.Name, expected.Name);
AssertSql(
@"@__p_0='1'
......@@ -80,9 +82,11 @@ public void Parameter()
public void Output_string_with_jsonb()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Name == "Joe");
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -94,9 +98,11 @@ public void Output_string_with_jsonb()
public void Output_string_with_json()
{
using var ctx = CreateContext();
var x = ctx.JsonEntities.Single(e => e.Customer.Name == "Joe");
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonEntities"" AS j
......@@ -108,9 +114,11 @@ public void Output_string_with_json()
public void Output_int()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Age < 30);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -122,9 +130,11 @@ public void Output_int()
public void Output_Guid()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.ID == Guid.Empty);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -136,9 +146,11 @@ public void Output_Guid()
public void Output_bool()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.VariousTypes.Bool);
Assert.Equal("Moe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -150,10 +162,12 @@ WHERE CAST(j.""Customer""#>>'{VariousTypes,Bool}' AS boolean)
public void Output_DateTime()
{
using var ctx = CreateContext();
var p = new DateTime(1990, 3, 3, 17, 10, 15, DateTimeKind.Utc);
var x = ctx.JsonbEntities.Single(e => e.Customer.VariousTypes.DateTime == p);
Assert.Equal("Moe", x.Customer.Name);
AssertSql(
@"@__p_0='1990-03-03T17:10:15.0000000Z' (DbType = DateTime)
......@@ -167,10 +181,12 @@ public void Output_DateTime()
public void Output_DateTimeOffset()
{
using var ctx = CreateContext();
var p = new DateTimeOffset(1990, 3, 3, 17, 10, 15, TimeSpan.Zero);
var x = ctx.JsonbEntities.Single(e => e.Customer.VariousTypes.DateTimeOffset == p);
Assert.Equal("Moe", x.Customer.Name);
AssertSql(
@"@__p_0='1990-03-03T17:10:15.0000000+00:00' (DbType = DateTime)
......@@ -186,6 +202,7 @@ public void Output_DateTimeOffset()
public void Nullable()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Statistics.Nested.SomeNullableInt == 20);
Assert.Equal("Joe", x.Customer.Name);
......@@ -201,6 +218,7 @@ public void Nullable()
public void Compare_to_null()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Statistics.Nested.SomeNullableInt == null);
Assert.Equal("Moe", x.Customer.Name);
......@@ -216,9 +234,11 @@ public void Compare_to_null()
public void Nested()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Statistics.Visits == 4);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -230,9 +250,11 @@ public void Nested()
public void Nested_twice()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Statistics.Nested.SomeProperty == 10);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -244,9 +266,11 @@ public void Nested_twice()
public void Array_of_objects()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Orders[0].Price == 99.5m);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -258,9 +282,11 @@ public void Array_of_objects()
public void Array_toplevel()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.ToplevelArray[1] == "two");
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -272,9 +298,11 @@ public void Array_toplevel()
public void Array_nested()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Statistics.Nested.IntArray[1] == 4);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -286,10 +314,12 @@ public void Array_nested()
public void Array_parameter_index()
{
using var ctx = CreateContext();
var i = 1;
var x = ctx.JsonbEntities.Single(e => e.Customer.Statistics.Nested.IntArray[i] == 4);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"@__i_0='1'
......@@ -303,9 +333,11 @@ public void Array_parameter_index()
public void Array_Length()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Orders.Length == 2);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -317,9 +349,11 @@ public void Array_Length()
public void Array_Length_json()
{
using var ctx = CreateContext();
var x = ctx.JsonEntities.Single(e => e.Customer.Orders.Length == 2);
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonEntities"" AS j
......@@ -331,9 +365,11 @@ public void Array_Length_json()
public void Array_Any_toplevel()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.ToplevelArray.Any());
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -345,9 +381,11 @@ public void Array_Any_toplevel()
public void Like()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e => e.Customer.Name.StartsWith("J"));
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -359,10 +397,12 @@ public void Like()
public void Where_nullable_guid()
{
using var ctx = CreateContext();
var x = ctx.JsonbEntities.Single(e =>
e.Customer.Statistics.Nested.SomeNullableGuid == Guid.Parse("d5f2685d-e5c4-47e5-97aa-d0266154eb2d"));
Assert.Equal("Joe", x.Customer.Name);
AssertSql(
@"SELECT j.""Id"", j.""Customer"", j.""ToplevelArray""
FROM ""JsonbEntities"" AS j
......@@ -725,4 +765,4 @@ public class VariousTypes
}
#endregion
}
\ No newline at end of file
}
......@@ -50,7 +50,9 @@ public void Literal()
{
using var ctx = CreateContext();
Assert.Empty(ctx.JsonEntities.Where(e => e.CustomerJsonb == @"{""Name"":""Test customer"",""Age"":80,""IsVip"":false,""Statistics"":null,""Orders"":null}"));
Assert.Empty(ctx.JsonEntities.Where(
e => e.CustomerJsonb == @"{""Name"":""Test customer"",""Age"":80,""IsVip"":false,""Statistics"":null,""Orders"":null}"));
AssertSql(
@"SELECT j.""Id"", j.""CustomerJson"", j.""CustomerJsonb""
FROM ""JsonEntities"" AS j
......@@ -61,10 +63,12 @@ public void Literal()
public void Parameter()
{
using var ctx = CreateContext();
var expected = ctx.JsonEntities.Find(1).CustomerJsonb;
var actual = ctx.JsonEntities.Single(e => e.CustomerJsonb == expected).CustomerJsonb;
Assert.Equal(actual, expected);
AssertSql(
@"@__p_0='1'
......@@ -83,34 +87,33 @@ public void Parameter()
#region Functions
// [Fact]
// public void JsonContains_with_json_element()
// {
// using (var ctx = CreateContext())
// {
// var element = JsonDocument.Parse(@"{""Name"": ""Joe"", ""Age"": 25}").RootElement;
// var count = ctx.JsonEntities.Count(e =>
// EF.Functions.JsonContains(e.Customer, element));
// Assert.Equal(1, count);
//
// AssertSql(
// @"@__element_1='{""Name"": ""Joe""
//""Age"": 25}' (DbType = Object)
//
//SELECT COUNT(*)::INT
//FROM ""JsonbEntities"" AS j
//WHERE (j.""Customer"" @> @__element_1)");
// }
// }
[Fact]
public void JsonContains_with_json_element()
{
using var ctx = CreateContext();
var element = JsonDocument.Parse(@"{""Name"": ""Joe"", ""Age"": 25}").RootElement;
var count = ctx.JsonEntities.Count(e => EF.Functions.JsonContains(e.CustomerJsonb, element));
Assert.Equal(1, count);
AssertSql(
@"@__element_1='{""Name"": ""Joe"", ""Age"": 25}' (DbType = Object)
SELECT COUNT(*)::INT
FROM ""JsonEntities"" AS j
WHERE j.""CustomerJsonb"" @> @__element_1");
}
[Fact]
public void JsonContains_with_string()
{
using var ctx = CreateContext();
var count = ctx.JsonEntities.Count(e =>
EF.Functions.JsonContains(e.CustomerJsonb, @"{""Name"": ""Joe"", ""Age"": 25}"));
var count = ctx.JsonEntities.Count(e => EF.Functions.JsonContains(e.CustomerJsonb, @"{""Name"": ""Joe"", ""Age"": 25}"));
Assert.Equal(1, count);
AssertSql(
@"SELECT COUNT(*)::INT
FROM ""JsonEntities"" AS j
......@@ -121,11 +124,12 @@ public void JsonContains_with_string()
public void JsonContained_with_json_element()
{
using var ctx = CreateContext();
var element = JsonDocument.Parse(@"{""Name"": ""Joe"", ""Age"": 25}").RootElement;
var count = ctx.JsonEntities.Count(e =>
EF.Functions.JsonContained(element, e.CustomerJsonb));
var count = ctx.JsonEntities.Count(e => EF.Functions.JsonContained(element, e.CustomerJsonb));
Assert.Equal(1, count);
AssertSql(
@"@__element_1='{""Name"": ""Joe"", ""Age"": 25}' (DbType = Object)
......@@ -138,10 +142,11 @@ public void JsonContained_with_json_element()
public void JsonContained_with_string()
{
using var ctx = CreateContext();
var count = ctx.JsonEntities.Count(e =>
EF.Functions.JsonContained(@"{""Name"": ""Joe"", ""Age"": 25}", e.CustomerJsonb));
var count = ctx.JsonEntities.Count(e => EF.Functions.JsonContained(@"{""Name"": ""Joe"", ""Age"": 25}", e.CustomerJsonb));
Assert.Equal(1, count);
AssertSql(
@"SELECT COUNT(*)::INT
FROM ""JsonEntities"" AS j
......@@ -152,10 +157,11 @@ public void JsonContained_with_string()
public void JsonExists()
{
using var ctx = CreateContext();
var count = ctx.JsonEntities.Count(e =>
EF.Functions.JsonExists(e.CustomerJsonb, "Age"));
var count = ctx.JsonEntities.Count(e => EF.Functions.JsonExists(e.CustomerJsonb, "Age"));
Assert.Equal(2, count);
AssertSql(
@"SELECT COUNT(*)::INT
FROM ""JsonEntities"" AS j
......@@ -166,10 +172,11 @@ public void JsonExists()
public void JsonExistAny()
{
using var ctx = CreateContext();
var count = ctx.JsonEntities.Count(e =>
EF.Functions.JsonExistAny(e.CustomerJsonb, "foo", "Age"));
var count = ctx.JsonEntities.Count(e => EF.Functions.JsonExistAny(e.CustomerJsonb, "foo", "Age"));
Assert.Equal(2, count);
AssertSql(
@"SELECT COUNT(*)::INT
FROM ""JsonEntities"" AS j
......@@ -180,10 +187,11 @@ public void JsonExistAny()
public void JsonExistAll()
{
using var ctx = CreateContext();
var count = ctx.JsonEntities.Count(e =>
EF.Functions.JsonExistAll(e.CustomerJsonb, "foo", "Age"));
var count = ctx.JsonEntities.Count(e => EF.Functions.JsonExistAll(e.CustomerJsonb, "foo", "Age"));
Assert.Equal(0, count);
AssertSql(
@"SELECT COUNT(*)::INT
FROM ""JsonEntities"" AS j
......@@ -262,9 +270,12 @@ public static void Seed(JsonStringQueryContext context)
]
}";
const string array = "[1, 2, 3]";
context.JsonEntities.AddRange(
new JsonEntity { Id = 1, CustomerJsonb = customer1, CustomerJson = customer1 },
new JsonEntity { Id = 2, CustomerJsonb = customer2, CustomerJson = customer2 });
new JsonEntity { Id = 2, CustomerJsonb = customer2, CustomerJson = customer2 },
new JsonEntity { Id = 3, CustomerJsonb = array, CustomerJson = array });
context.SaveChanges();
}
}
......@@ -288,4 +299,4 @@ public class JsonStringQueryFixture : SharedStoreFixtureBase<JsonStringQueryCont
}
#endregion
}
\ No newline at end of file
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册