Skip to content
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
575 changes: 575 additions & 0 deletions test/EFCore.Cosmos.FunctionalTests/Query/JsonQueryCosmosFixture.cs

Large diffs are not rendered by default.

2,336 changes: 2,336 additions & 0 deletions test/EFCore.Cosmos.FunctionalTests/Query/JsonQueryCosmosTest.cs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class InMemoryComplianceTest : ComplianceTestBase
typeof(InheritanceBulkUpdatesTestBase<>),
typeof(NonSharedModelBulkUpdatesTestBase),
typeof(NorthwindBulkUpdatesTestBase<>),
typeof(JsonQueryTestBase<>),
};

protected override Assembly TargetAssembly { get; } = typeof(InMemoryComplianceTest).Assembly;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using Microsoft.EntityFrameworkCore.TestModels.JsonQuery;

namespace Microsoft.EntityFrameworkCore.Query;

#nullable disable

public abstract class JsonQueryRelationalFixture: JsonQueryFixtureBase, ITestSqlLoggerFactory
{
public new RelationalTestStore TestStore
=> (RelationalTestStore)base.TestStore;

public TestSqlLoggerFactory TestSqlLoggerFactory
=> (TestSqlLoggerFactory)ListLoggerFactory;

protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext context)
{
base.OnModelCreating(modelBuilder, context);

modelBuilder.Entity<JsonEntityBasic>().OwnsOne(x => x.OwnedReferenceRoot).ToJson();
modelBuilder.Entity<JsonEntityBasic>().OwnsMany(x => x.OwnedCollectionRoot).ToJson();

modelBuilder.Entity<JsonEntityCustomNaming>().OwnsOne(x => x.OwnedReferenceRoot).ToJson("json_reference_custom_naming");
modelBuilder.Entity<JsonEntityCustomNaming>().OwnsMany(x => x.OwnedCollectionRoot).ToJson("json_collection_custom_naming");

modelBuilder.Entity<JsonEntitySingleOwned>().OwnsMany(x => x.OwnedCollection).ToJson();

modelBuilder.Entity<JsonEntityInheritanceBase>(
b =>
{
b.OwnsOne(x => x.ReferenceOnBase).ToJson();
b.OwnsMany(x => x.CollectionOnBase).ToJson();
});

modelBuilder.Entity<JsonEntityInheritanceDerived>(
b =>
{
b.HasBaseType<JsonEntityInheritanceBase>();
b.OwnsOne(x => x.ReferenceOnDerived).ToJson();
b.OwnsMany(x => x.CollectionOnDerived).ToJson();
});

modelBuilder.Entity<JsonEntityAllTypes>().OwnsOne(x => x.Reference).ToJson();
modelBuilder.Entity<JsonEntityAllTypes>().OwnsMany(x => x.Collection).ToJson();

modelBuilder.Entity<JsonEntityConverters>().OwnsOne(x => x.Reference).ToJson();
}
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Microsoft.EntityFrameworkCore.Query;

#nullable disable

public abstract class JsonQueryFixtureBase : SharedStoreFixtureBase<JsonQueryContext>, IQueryFixtureBase, ITestSqlLoggerFactory
public abstract class JsonQueryFixtureBase : SharedStoreFixtureBase<JsonQueryContext>, IQueryFixtureBase
{
private JsonQueryData _expectedData;

Expand All @@ -30,7 +30,7 @@ public virtual ISetSource GetExpectedData()
{ typeof(JsonEntityAllTypes), e => ((JsonEntityAllTypes)e)?.Id },
}.ToDictionary(e => e.Key, e => (object)e.Value);

public IReadOnlyDictionary<Type, object> EntityAsserters { get; } = new Dictionary<Type, Action<object, object>>
public virtual IReadOnlyDictionary<Type, object> EntityAsserters { get; } = new Dictionary<Type, Action<object, object>>
{
{
typeof(EntityBasic), (e, a) =>
Expand Down Expand Up @@ -448,24 +448,6 @@ public static void AssertConverters(JsonOwnedConverters expected, JsonOwnedConve
Assert.Equal(expected.StringYNConvertedToBool, actual.StringYNConvertedToBool);
}

protected override string StoreName { get; } = "JsonQueryTest";

public new RelationalTestStore TestStore
=> (RelationalTestStore)base.TestStore;

public TestSqlLoggerFactory TestSqlLoggerFactory
=> (TestSqlLoggerFactory)ListLoggerFactory;

public override JsonQueryContext CreateContext()
{
var context = base.CreateContext();

return context;
}

protected override async Task SeedAsync(JsonQueryContext context)
=> await JsonQueryContext.SeedAsync(context);

protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext context)
{
modelBuilder.Entity<JsonEntityBasic>().Property(x => x.Id).ValueGeneratedNever();
Expand All @@ -481,7 +463,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
modelBuilder.Entity<JsonEntityBasic>().OwnsOne(
x => x.OwnedReferenceRoot, b =>
{
b.ToJson();
b.WithOwner(x => x.Owner);

b.OwnsOne(
Expand Down Expand Up @@ -522,7 +503,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
bb.OwnsOne(x => x.OwnedReferenceLeaf).WithOwner(x => x.Parent);
bb.OwnsMany(x => x.OwnedCollectionLeaf);
});
b.ToJson();
});

modelBuilder.Entity<JsonEntityCustomNaming>().Property(x => x.Id).ValueGeneratedNever();
Expand All @@ -532,13 +512,11 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
b.Property(x => x.Enum).HasConversion<int>();
b.OwnsOne(x => x.OwnedReferenceBranch);
b.OwnsMany(x => x.OwnedCollectionBranch);
b.ToJson("json_reference_custom_naming");
});

modelBuilder.Entity<JsonEntityCustomNaming>().OwnsMany(
x => x.OwnedCollectionRoot, b =>
{
b.ToJson("json_collection_custom_naming");
b.Property(x => x.Enum).HasConversion<int>();
b.OwnsOne(x => x.OwnedReferenceBranch);
b.OwnsMany(x => x.OwnedCollectionBranch);
Expand All @@ -548,7 +526,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
modelBuilder.Entity<JsonEntitySingleOwned>().OwnsMany(
x => x.OwnedCollection, b =>
{
b.ToJson();
b.Ignore(x => x.Parent);
});

Expand All @@ -559,7 +536,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
b.OwnsOne(
x => x.ReferenceOnBase, bb =>
{
bb.ToJson();
bb.OwnsOne(x => x.OwnedReferenceLeaf);
bb.OwnsMany(x => x.OwnedCollectionLeaf);
bb.Property(x => x.Fraction).HasPrecision(18, 2);
Expand All @@ -568,7 +544,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
b.OwnsMany(
x => x.CollectionOnBase, bb =>
{
bb.ToJson();
bb.OwnsOne(x => x.OwnedReferenceLeaf);
bb.OwnsMany(x => x.OwnedCollectionLeaf);
bb.Property(x => x.Fraction).HasPrecision(18, 2);
Expand All @@ -582,7 +557,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
b.OwnsOne(
x => x.ReferenceOnDerived, bb =>
{
bb.ToJson();
bb.OwnsOne(x => x.OwnedReferenceLeaf);
bb.OwnsMany(x => x.OwnedCollectionLeaf);
bb.Property(x => x.Fraction).HasPrecision(18, 2);
Expand All @@ -591,7 +565,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
b.OwnsMany(
x => x.CollectionOnDerived, bb =>
{
bb.ToJson();
bb.OwnsOne(x => x.OwnedReferenceLeaf);
bb.OwnsMany(x => x.OwnedCollectionLeaf);
bb.Property(x => x.Fraction).HasPrecision(18, 2);
Expand All @@ -602,7 +575,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
modelBuilder.Entity<JsonEntityAllTypes>().OwnsOne(
x => x.Reference, b =>
{
b.ToJson();
b.Property(x => x.TestMaxLengthString).HasMaxLength(5);
b.Property(x => x.TestDecimal).HasPrecision(18, 3);
b.Property(x => x.TestEnumWithIntConverter).HasConversion<int>();
Expand Down Expand Up @@ -630,7 +602,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
modelBuilder.Entity<JsonEntityAllTypes>().OwnsMany(
x => x.Collection, b =>
{
b.ToJson();
b.Property(x => x.TestMaxLengthString).HasMaxLength(5);
b.Property(x => x.TestDecimal).HasPrecision(18, 3);
b.Property(x => x.TestEnumWithIntConverter).HasConversion<int>();
Expand Down Expand Up @@ -660,7 +631,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
modelBuilder.Entity<JsonEntityConverters>().OwnsOne(
x => x.Reference, b =>
{
b.ToJson();
b.Property(x => x.BoolConvertedToIntZeroOne).HasConversion<BoolToZeroOneConverter<int>>();
b.Property(x => x.BoolConvertedToStringTrueFalse).HasConversion(new BoolToStringConverter("False", "True"));
b.Property(x => x.BoolConvertedToStringYN).HasConversion(new BoolToStringConverter("N", "Y"));
Expand All @@ -680,4 +650,16 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
x => x == true ? "Y" : "N"));
});
}

protected override string StoreName { get; } = "JsonQueryTest";

public override JsonQueryContext CreateContext()
{
var context = base.CreateContext();

return context;
}

protected override async Task SeedAsync(JsonQueryContext context)
=> await JsonQueryContext.SeedAsync(context);
}
Loading