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

Update ProxyGraphUpdatesInMemoryTest #26301

Merged
merged 1 commit into from
Oct 12, 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 @@ -6,6 +6,7 @@
using Microsoft.EntityFrameworkCore.Diagnostics;
using Microsoft.EntityFrameworkCore.TestUtilities;
using Microsoft.Extensions.DependencyInjection;
using Xunit;

#pragma warning disable RCS1102 // Make class static.
namespace Microsoft.EntityFrameworkCore
Expand All @@ -20,83 +21,102 @@ protected ProxyGraphUpdatesInMemoryTestBase(TFixture fixture)
{
}

public override void Attempting_to_save_two_entity_cycle_with_lazy_loading_throws()
{
}

// #11552
public override void Save_required_one_to_one_changed_by_reference(ChangeMechanism changeMechanism)
{
}

[ConditionalFact(Skip = "FK constraint checking. Issue #2166")]
public override void Optional_one_to_one_relationships_are_one_to_one()
{
base.Optional_one_to_one_relationships_are_one_to_one();
}


[ConditionalFact(Skip = "FK constraint checking. Issue #2166")]
public override void Optional_one_to_one_with_AK_relationships_are_one_to_one()
{
base.Optional_one_to_one_with_AK_relationships_are_one_to_one();
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Optional_many_to_one_dependents_with_alternate_key_are_orphaned_in_store(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Optional_many_to_one_dependents_with_alternate_key_are_orphaned_in_store(cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Optional_many_to_one_dependents_are_orphaned_in_store(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Optional_many_to_one_dependents_are_orphaned_in_store(cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Required_one_to_one_are_cascade_detached_when_Added(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Required_one_to_one_are_cascade_detached_when_Added(cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalFact(Skip = "FK constraint checking. Issue #2166")]
public override void Required_one_to_one_relationships_are_one_to_one()
{
base.Required_one_to_one_relationships_are_one_to_one();
}


[ConditionalFact(Skip = "FK constraint checking. Issue #2166")]
public override void Required_one_to_one_with_AK_relationships_are_one_to_one()
{
base.Required_one_to_one_with_AK_relationships_are_one_to_one();
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Required_one_to_one_with_alternate_key_are_cascade_detached_when_Added(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Required_one_to_one_with_alternate_key_are_cascade_detached_when_Added(cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Required_one_to_one_with_alternate_key_are_cascade_deleted_in_store(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Required_one_to_one_with_alternate_key_are_cascade_deleted_in_store(cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Required_many_to_one_dependents_are_cascade_deleted_in_store(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Required_many_to_one_dependents_are_cascade_deleted_in_store(cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Required_many_to_one_dependents_with_alternate_key_are_cascade_deleted_in_store(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Required_many_to_one_dependents_with_alternate_key_are_cascade_deleted_in_store(
cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Required_non_PK_one_to_one_are_cascade_detached_when_Added(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Required_non_PK_one_to_one_are_cascade_detached_when_Added(cascadeDeleteTiming, deleteOrphansTiming);
}


[ConditionalTheory(Skip = "Cascade delete. Issue #3924")]
public override void Required_non_PK_one_to_one_with_alternate_key_are_cascade_detached_when_Added(
CascadeTiming cascadeDeleteTiming,
CascadeTiming deleteOrphansTiming)
{
base.Required_non_PK_one_to_one_with_alternate_key_are_cascade_detached_when_Added(
cascadeDeleteTiming, deleteOrphansTiming);
}

protected override void ExecuteWithStrategyInTransaction(
Expand Down Expand Up @@ -151,6 +171,11 @@ public ChangeTracking(ProxyGraphUpdatesWithChangeTrackingInMemoryFixture fixture
{
}

// Needs lazy loading
public override void Save_two_entity_cycle_with_lazy_loading()
{
}

protected override bool DoesLazyLoading
=> false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public abstract partial class ProxyGraphUpdatesTestBase<TFixture>
where TFixture : ProxyGraphUpdatesTestBase<TFixture>.ProxyGraphUpdatesFixtureBase, new()
{
[ConditionalFact]
public virtual void Attempting_to_save_two_entity_cycle_with_lazy_loading_throws()
public virtual void Save_two_entity_cycle_with_lazy_loading()
{
ExecuteWithStrategyInTransaction(
context =>
Expand All @@ -41,13 +41,27 @@ public virtual void Attempting_to_save_two_entity_cycle_with_lazy_loading_throws
{
var cars = context.Set<Car>().ToList();

var owner0 = cars[0].Owner;
var owner1 = cars[1].Owner;

(cars[1].Owner, cars[0].Owner) = (cars[0].Owner, cars[1].Owner);

cars[0].Owner.Vehicle = cars[0];
cars[1].Owner.Vehicle = cars[1];

var message = Assert.Throws<InvalidOperationException>(() => context.SaveChanges()).Message;
Assert.StartsWith(CoreStrings.CircularDependency("").Substring(0, 30), message);
if (context.Database.ProviderName == "Microsoft.EntityFrameworkCore.InMemory")
{
context.SaveChanges();
Assert.Same(owner0, cars[1].Owner);
Assert.Same(owner1, cars[0].Owner);
Assert.Same(cars[0], cars[0].Owner.Vehicle);
Assert.Same(cars[1], cars[1].Owner.Vehicle);
}
else
{
var message = Assert.Throws<InvalidOperationException>(() => context.SaveChanges()).Message;
Assert.StartsWith(CoreStrings.CircularDependency("").Substring(0, 30), message);
}
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public ChangeTracking(ProxyGraphUpdatesWithChangeTrackingSqlServerFixture fixtur
}

// Needs lazy loading
public override void Attempting_to_save_two_entity_cycle_with_lazy_loading_throws()
public override void Save_two_entity_cycle_with_lazy_loading()
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public ChangeTracking(ProxyGraphUpdatesWithChangeTrackingSqliteFixture fixture)
}

// Needs lazy loading
public override void Attempting_to_save_two_entity_cycle_with_lazy_loading_throws()
public override void Save_two_entity_cycle_with_lazy_loading()
{
}

Expand Down