Skip to content

Commit

Permalink
Refactor graph update Tests to multiple files
Browse files Browse the repository at this point in the history
To improve both editor responsiveness
  • Loading branch information
ajcvickers committed Feb 2, 2020
1 parent 0151831 commit 5eb50a5
Show file tree
Hide file tree
Showing 26 changed files with 16,267 additions and 16,072 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,144 +8,143 @@

namespace Microsoft.EntityFrameworkCore
{
public class GraphUpdatesInMemoryTest
: GraphUpdatesTestBase<GraphUpdatesInMemoryTest.GraphUpdatesInMemoryFixture>
public class GraphUpdatesInMemoryTest : GraphUpdatesTestBase<GraphUpdatesInMemoryTest.InMemoryFixture>
{
public GraphUpdatesInMemoryTest(GraphUpdatesInMemoryFixture fixture)
public GraphUpdatesInMemoryTest(InMemoryFixture fixture)
: base(fixture)
{
}

public override void Optional_One_to_one_relationships_are_one_to_one(
public override void Required_many_to_one_dependents_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_One_to_one_relationships_are_one_to_one(
public override void Optional_many_to_one_dependents_are_orphaned_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Optional_One_to_one_with_AK_relationships_are_one_to_one(
public override void Required_many_to_one_dependents_with_alternate_key_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_One_to_one_with_AK_relationships_are_one_to_one(
public override void Optional_many_to_one_dependents_with_alternate_key_are_orphaned_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Save_required_one_to_one_changed_by_reference(
ChangeMechanism changeMechanism,
public override void Optional_One_to_one_relationships_are_one_to_one(
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Sever_required_one_to_one(
ChangeMechanism changeMechanism,
public override void Required_One_to_one_relationships_are_one_to_one(
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_many_to_one_dependents_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
public override void Save_required_one_to_one_changed_by_reference(
ChangeMechanism changeMechanism,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_one_to_one_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
public override void Sever_required_one_to_one(
ChangeMechanism changeMechanism,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_non_PK_one_to_one_are_cascade_deleted_in_store(
public override void Required_one_to_one_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_many_to_one_dependents_with_alternate_key_are_cascade_deleted_in_store(
public override void Required_non_PK_one_to_one_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_one_to_one_with_alternate_key_are_cascade_deleted_in_store(
public override void Optional_one_to_one_are_orphaned_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_non_PK_one_to_one_with_alternate_key_are_cascade_deleted_in_store(
public override void Required_one_to_one_are_cascade_detached_when_Added(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Optional_many_to_one_dependents_are_orphaned_in_store(
public override void Required_non_PK_one_to_one_are_cascade_detached_when_Added(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Optional_one_to_one_are_orphaned_in_store(
CascadeTiming? cascadeDeleteTiming,
public override void Optional_One_to_one_with_AK_relationships_are_one_to_one(
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Optional_many_to_one_dependents_with_alternate_key_are_orphaned_in_store(
CascadeTiming? cascadeDeleteTiming,
public override void Required_One_to_one_with_AK_relationships_are_one_to_one(
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Optional_one_to_one_with_alternate_key_are_orphaned_in_store(
public override void Required_one_to_one_with_alternate_key_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_non_PK_one_to_one_with_alternate_key_are_cascade_detached_when_Added(
public override void Required_non_PK_one_to_one_with_alternate_key_are_cascade_deleted_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_one_to_one_are_cascade_detached_when_Added(
public override void Optional_one_to_one_with_alternate_key_are_orphaned_in_store(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_one_to_one_with_alternate_key_are_cascade_detached_when_Added(
public override void Required_non_PK_one_to_one_with_alternate_key_are_cascade_detached_when_Added(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
// FK uniqueness not enforced in in-memory database
}

public override void Required_non_PK_one_to_one_are_cascade_detached_when_Added(
public override void Required_one_to_one_with_alternate_key_are_cascade_detached_when_Added(
CascadeTiming? cascadeDeleteTiming,
CascadeTiming? deleteOrphansTiming)
{
Expand All @@ -162,8 +161,10 @@ protected override void ExecuteWithStrategyInTransaction(
Fixture.Reseed();
}

public class GraphUpdatesInMemoryFixture : GraphUpdatesFixtureBase
public class InMemoryFixture : GraphUpdatesFixtureBase
{
protected override string StoreName { get; } = "GraphUpdatesTest";

protected override ITestStoreFactory TestStoreFactory => InMemoryTestStoreFactory.Instance;

public override DbContextOptionsBuilder AddOptions(DbContextOptionsBuilder builder)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,8 @@
<PackageReference Include="xunit" Version="$(XUnitVersion)" />
</ItemGroup>

<ItemGroup>
<Folder Include="GraphUpdates" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,15 @@
// ReSharper disable NonReadonlyMemberInGetHashCode
namespace Microsoft.EntityFrameworkCore
{
public abstract partial class GraphUpdatesTestBase<TFixture>
public abstract partial class GraphUpdatesTestBase<TFixture> : IClassFixture<TFixture>
where TFixture : GraphUpdatesTestBase<TFixture>.GraphUpdatesFixtureBase, new()
{
protected GraphUpdatesTestBase(TFixture fixture) => Fixture = fixture;

protected TFixture Fixture { get; }

public abstract class GraphUpdatesFixtureBase : SharedStoreFixtureBase<PoolableDbContext>
{
protected override string StoreName { get; } = "GraphUpdatesChangedTest";
public readonly Guid RootAK = Guid.NewGuid();
public virtual bool ForceClientNoAction => false;
public virtual bool NoStoreCascades => false;
Expand Down Expand Up @@ -586,9 +590,9 @@ public virtual EntityState DetermineState(EntityEntry entry)
}
}

private static void Add<T>(IEnumerable<T> collection, T item) => ((ICollection<T>)collection).Add(item);
protected static void Add<T>(IEnumerable<T> collection, T item) => ((ICollection<T>)collection).Add(item);

private static void Remove<T>(IEnumerable<T> collection, T item) => ((ICollection<T>)collection).Remove(item);
protected static void Remove<T>(IEnumerable<T> collection, T item) => ((ICollection<T>)collection).Remove(item);

[Flags]
public enum ChangeMechanism
Expand Down Expand Up @@ -682,15 +686,15 @@ protected Root LoadRequiredCompositeGraph(DbContext context)
.Single(IsTheRoot);
}

private static void AssertEntries(IReadOnlyList<EntityEntry> expectedEntries, IReadOnlyList<EntityEntry> actualEntries)
protected static void AssertEntries(IReadOnlyList<EntityEntry> expectedEntries, IReadOnlyList<EntityEntry> actualEntries)
{
var newEntities = new HashSet<object>(actualEntries.Select(ne => ne.Entity));
var missingEntities = expectedEntries.Select(e => e.Entity).Where(e => !newEntities.Contains(e)).ToList();
Assert.Equal(Array.Empty<object>(), missingEntities);
Assert.Equal(expectedEntries.Count, actualEntries.Count);
}

private static void AssertKeys(Root expected, Root actual)
protected static void AssertKeys(Root expected, Root actual)
{
Assert.Equal(expected.Id, actual.Id);

Expand Down Expand Up @@ -813,7 +817,7 @@ private static void AssertKeys(Root expected, Root actual)
e => new { e.Id, e.ParentAlternateId }));
}

private static void AssertNavigations(Root root)
protected static void AssertNavigations(Root root)
{
foreach (var child in root.RequiredChildren)
{
Expand Down Expand Up @@ -896,7 +900,7 @@ private static void AssertNavigations(Root root)
}
}

private static void AssertPossiblyNullNavigations(Root root)
protected static void AssertPossiblyNullNavigations(Root root)
{
foreach (var child in root.RequiredChildren)
{
Expand Down
Loading

0 comments on commit 5eb50a5

Please sign in to comment.