You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
301 lines
8.9 KiB
C#
301 lines
8.9 KiB
C#
using EntityFrameworkCore.Jet.FunctionalTests.TestUtilities;
|
|
using Microsoft.EntityFrameworkCore.TestUtilities;
|
|
using Microsoft.EntityFrameworkCore.Update;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace EntityFrameworkCore.Jet.FunctionalTests.Update;
|
|
|
|
public class ComplexCollectionJsonUpdateJetTest : ComplexCollectionJsonUpdateTestBase<
|
|
ComplexCollectionJsonUpdateJetTest.ComplexCollectionJsonUpdateJetFixture>
|
|
{
|
|
public ComplexCollectionJsonUpdateJetTest(ComplexCollectionJsonUpdateJetFixture fixture)
|
|
: base(fixture)
|
|
=> ClearLog();
|
|
|
|
public override async Task Add_element_to_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Add_element_to_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"First Contact","PhoneNumbers":["555-1234","555-5678"]},{"Name":"Second Contact","PhoneNumbers":["555-9876","555-5432"]},{"Name":"New Contact","PhoneNumbers":["555-0000"]}]' (Nullable = false) (Size = 181)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Remove_element_from_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Remove_element_from_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Second Contact","PhoneNumbers":["555-9876","555-5432"]}]' (Nullable = false) (Size = 66)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Modify_element_in_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Modify_element_in_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"First Contact - Modified","PhoneNumbers":["555-1234","555-5678"]},{"Name":"Second Contact","PhoneNumbers":["555-9876","555-5432"]}]' (Nullable = false) (Size = 141)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Move_elements_in_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Move_elements_in_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Second Contact","PhoneNumbers":["555-9876","555-5432"]},{"Name":"First Contact","PhoneNumbers":["555-1234","555-5678"]}]' (Nullable = false) (Size = 130)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Change_complex_collection_mapped_to_json_to_null_and_to_empty()
|
|
{
|
|
await base.Change_complex_collection_mapped_to_json_to_null_and_to_empty();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[]' (Nullable = false) (Size = 2)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""",
|
|
//
|
|
"""
|
|
@p0=NULL (Nullable = false)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Complex_collection_with_nested_complex_type_mapped_to_json()
|
|
{
|
|
await base.Complex_collection_with_nested_complex_type_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"John Doe","PhoneNumbers":["555-1234","555-5678"],"Address":{"City":"Seattle","Country":"USA","PostalCode":"98101","Street":"123 Main St"}},{"Name":"Jane Smith","PhoneNumbers":["555-9876"],"Address":{"City":"Portland","Country":"USA","PostalCode":"97201","Street":"456 Oak Ave"}}]' (Nullable = false) (Size = 289)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Employees` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Modify_multiple_complex_properties_mapped_to_json()
|
|
{
|
|
await base.Modify_multiple_complex_properties_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Contact 1","PhoneNumbers":["555-1111"]}]' (Nullable = false) (Size = 50)
|
|
@p1='{"Budget":50000.00,"Name":"Department A"}' (Nullable = false) (Size = 41)
|
|
@p2='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0, `Department` = @p1
|
|
WHERE `Id` = @p2;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Clear_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Clear_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[]' (Nullable = false) (Size = 2)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Replace_entire_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Replace_entire_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Replacement Contact 1","PhoneNumbers":["999-1111"]},{"Name":"Replacement Contact 2","PhoneNumbers":["999-2222","999-3333"]}]' (Nullable = false) (Size = 134)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Contacts` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Add_element_to_nested_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Add_element_to_nested_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Initial Employee","PhoneNumbers":["555-0001","555-9999"],"Address":{"City":"Initial City","Country":"USA","PostalCode":"00001","Street":"100 First St"}}]' (Nullable = false) (Size = 163)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Employees` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Modify_nested_complex_property_in_complex_collection_mapped_to_json()
|
|
{
|
|
await base.Modify_nested_complex_property_in_complex_collection_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Initial Employee","PhoneNumbers":["555-0001"],"Address":{"City":"Modified City","Country":"USA","PostalCode":"99999","Street":"100 First St"}}]' (Nullable = false) (Size = 153)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Employees` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Set_complex_collection_to_null_mapped_to_json()
|
|
{
|
|
await base.Set_complex_collection_to_null_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0=NULL (Nullable = false)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Employees` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Set_null_complex_collection_to_non_empty_mapped_to_json()
|
|
{
|
|
await base.Set_null_complex_collection_to_non_empty_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"New Employee","PhoneNumbers":["555-1111"],"Address":{"City":"New City","Country":"USA","PostalCode":"12345","Street":"123 New St"}}]' (Nullable = false) (Size = 142)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Employees` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Replace_complex_collection_element_mapped_to_json()
|
|
{
|
|
await base.Replace_complex_collection_element_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Replacement Employee","PhoneNumbers":["555-7777","555-8888"],"Address":{"City":"Replace City","Country":"Canada","PostalCode":"54321","Street":"789 Replace St"}}]' (Nullable = false) (Size = 172)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Employees` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Complex_collection_with_empty_nested_collections_mapped_to_json()
|
|
{
|
|
await base.Complex_collection_with_empty_nested_collections_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='[{"Name":"Initial Employee","PhoneNumbers":["555-0001"],"Address":{"City":"Initial City","Country":"USA","PostalCode":"00001","Street":"100 First St"}},{"Name":"Employee No Phone","PhoneNumbers":[],"Address":{"City":"Quiet City","Country":"USA","PostalCode":"00000","Street":"456 No Phone St"}}]' (Nullable = false) (Size = 295)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Employees` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Set_complex_property_mapped_to_json_to_null()
|
|
{
|
|
await base.Set_complex_property_mapped_to_json_to_null();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0=NULL (Nullable = false)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Department` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Set_null_complex_property_to_non_null_mapped_to_json()
|
|
{
|
|
await base.Set_null_complex_property_to_non_null_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='{"Budget":25000.00,"Name":"New Department"}' (Nullable = false) (Size = 43)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Department` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public override async Task Replace_complex_property_mapped_to_json()
|
|
{
|
|
await base.Replace_complex_property_mapped_to_json();
|
|
|
|
AssertSql(
|
|
"""
|
|
@p0='{"Budget":99999.99,"Name":"Replacement Department"}' (Nullable = false) (Size = 51)
|
|
@p1='1'
|
|
|
|
UPDATE `Companies` SET `Department` = @p0
|
|
WHERE `Id` = @p1;
|
|
SELECT @@ROWCOUNT;
|
|
""");
|
|
}
|
|
|
|
public class ComplexCollectionJsonUpdateJetFixture : ComplexCollectionJsonUpdateFixtureBase
|
|
{
|
|
protected override ITestStoreFactory TestStoreFactory
|
|
=> JetTestStoreFactory.Instance;
|
|
}
|
|
}
|