Skip to content

Commit d130c12

Browse files
committed
Update tests.
Remove ComplexJson, OwnedJson, OwnedTableSplittingPrimitiveCollection as would never work BasicTypesQueryJetFixture: Update the expected value for DateTimeOffset to be utc Scaffolding tests: Add Compiled model test and its baselines
1 parent 824517c commit d130c12

94 files changed

Lines changed: 8220 additions & 3838 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/EFCore.Jet/Query/Sql/Internal/JetQuerySqlGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ protected override Expression VisitSqlConstant(SqlConstantExpression sqlConstant
561561
{
562562
if (sqlConstantExpression.TypeMapping == RelationalTypeMapping.NullMapping && sqlConstantExpression.Value is DateTime)
563563
{
564-
sqlConstantExpression = (SqlConstantExpression)sqlConstantExpression.ApplyTypeMapping(new JetDateTimeTypeMapping("datetime", _options));
564+
sqlConstantExpression = (SqlConstantExpression)sqlConstantExpression.ApplyTypeMapping(new JetDateTimeTypeMapping("datetime"));
565565
}
566566

567567
parent.TryPeek(out var exp);

test/EFCore.Jet.FunctionalTests/BulkUpdates/NorthwindBulkUpdatesJetTest.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,18 @@ public override async Task Update_Where_set_constant_via_lambda(bool async)
735735
""");
736736
}
737737

738+
public override async Task Update_Where_set_nullable_int_constant_via_discard_lambda(bool async)
739+
{
740+
await base.Update_Where_set_nullable_int_constant_via_discard_lambda(async);
741+
742+
AssertExecuteUpdateSql(
743+
"""
744+
UPDATE `Products` AS `p`
745+
SET `p`.`SupplierID` = 1
746+
WHERE `p`.`ProductID` < 5
747+
""");
748+
}
749+
738750
public override async Task Update_Where_parameter_set_constant(bool async)
739751
{
740752
await base.Update_Where_parameter_set_constant(async);
@@ -1652,17 +1664,16 @@ OFFSET @p ROWS
16521664
""");
16531665
}
16541666

1655-
/*public override async Task Update_with_select_mixed_entity_scalar_anonymous_projection(bool async)
1667+
public override async Task Update_with_select_mixed_entity_scalar_anonymous_projection(bool async)
16561668
{
16571669
await base.Update_with_select_mixed_entity_scalar_anonymous_projection(async);
16581670

16591671
AssertSql(
16601672
"""
16611673
@p='Updated' (Size = 30)
16621674
1663-
UPDATE [c]
1664-
SET [c].[ContactName] = @p
1665-
FROM [Customers] AS [c]
1675+
UPDATE `Customers` AS `c`
1676+
SET `c`.`ContactName` = @p
16661677
""");
16671678
}
16681679

@@ -1674,12 +1685,11 @@ public override async Task Update_with_select_scalar_anonymous_projection(bool a
16741685
"""
16751686
@p='Updated' (Size = 30)
16761687
1677-
UPDATE [c]
1678-
SET [c].[ContactName] = @p
1679-
FROM [Customers] AS [c]
1688+
UPDATE `Customers` AS `c`
1689+
SET `c`.`ContactName` = @p
16801690
""");
16811691
}
1682-
*/
1692+
16831693
private void AssertSql(params string[] expected)
16841694
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
16851695

test/EFCore.Jet.FunctionalTests/EFCore.Jet.FunctionalTests.csproj

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@
88
<PreserveCompilationContext>true</PreserveCompilationContext>
99
</PropertyGroup>
1010

11+
<ItemGroup>
12+
<Compile Remove="Scaffolding\Baselines\**\*" />
13+
</ItemGroup>
14+
15+
<ItemGroup>
16+
<None Include="Scaffolding\Baselines\**\*" />
17+
</ItemGroup>
18+
1119
<ItemGroup>
1220
<Compile Include="..\Shared\**\*.cs">
1321
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
@@ -72,6 +80,10 @@
7280
</None>
7381
<None Include="Query\AdHocJsonQueryJetTest.cs" />
7482
<None Include="Query\AdHocJsonQueryJetTestBase.cs" />
83+
<None Include="Update\UpdatesJetTest.cs" />
84+
<None Include="Update\UpdatesJetTestBase.cs" />
85+
<None Include="Update\UpdatesJetTPCTest.cs" />
86+
<None Include="Update\UpdatesJetTPTTest.cs" />
7587
<None Remove="TestResults\**" />
7688
</ItemGroup>
7789

@@ -104,6 +116,14 @@
104116
<Compile Remove="PropertyEntryJetTest.cs" />
105117
<Compile Remove="Query\AdHocJsonQueryJetTest.cs" />
106118
<Compile Remove="Query\AdHocJsonQueryJetTestBase.cs" />
119+
<Compile Remove="Update\UpdatesJetTest.cs" />
120+
<Compile Remove="Update\UpdatesJetTestBase.cs" />
121+
<Compile Remove="Update\UpdatesJetTPCTest.cs" />
122+
<Compile Remove="Update\UpdatesJetTPTTest.cs" />
123+
</ItemGroup>
124+
125+
<ItemGroup>
126+
<Folder Include="Scaffolding\Baselines\" />
107127
</ItemGroup>
108128

109129
</Project>

test/EFCore.Jet.FunctionalTests/GraphUpdates/GraphUpdatesJetOwnedTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
629629
modelBuilder.Entity<SharedFkRoot>().Property(x => x.Id).HasColumnType("int");
630630
modelBuilder.Entity<SharedFkDependant>().Property(x => x.Id).HasColumnType("int");
631631
modelBuilder.Entity<SharedFkParent>().Property(x => x.Id).HasColumnType("int");
632+
633+
modelBuilder.Entity<EntityZ>().Property(x => x.Id).HasColumnType("int");
632634
}
633635
}
634636
}

test/EFCore.Jet.FunctionalTests/GraphUpdates/GraphUpdatesJetTestBase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,8 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
218218
modelBuilder.Entity<SharedFkRoot>().Property(x => x.Id).HasColumnType("int");
219219
modelBuilder.Entity<SharedFkDependant>().Property(x => x.Id).HasColumnType("int");
220220
modelBuilder.Entity<SharedFkParent>().Property(x => x.Id).HasColumnType("int");
221+
222+
modelBuilder.Entity<EntityZ>().Property(x => x.Id).HasConversion<int>();
221223
}
222224

223225
protected override async Task SeedAsync(PoolableDbContext context)

test/EFCore.Jet.FunctionalTests/JetComplianceTest.cs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Reflection;
4-
using Microsoft.EntityFrameworkCore;
1+
using Microsoft.EntityFrameworkCore;
52
using Microsoft.EntityFrameworkCore.Query;
3+
using Microsoft.EntityFrameworkCore.Query.Associations.ComplexJson;
4+
using Microsoft.EntityFrameworkCore.Query.Associations.ComplexProperties;
5+
using Microsoft.EntityFrameworkCore.Query.Associations.OwnedJson;
6+
using Microsoft.EntityFrameworkCore.Query.Associations.OwnedTableSplitting;
67
using Microsoft.EntityFrameworkCore.Update;
8+
using System;
9+
using System.Collections.Generic;
10+
using System.Reflection;
711

812
namespace EntityFrameworkCore.Jet.FunctionalTests
913
{
@@ -21,8 +25,28 @@ public class JetComplianceTest : RelationalComplianceTestBase
2125
typeof(NonSharedPrimitiveCollectionsQueryTestBase),
2226
typeof(NonSharedPrimitiveCollectionsQueryRelationalTestBase),
2327
//No Json query support in Jet
28+
typeof(BadDataJsonDeserializationTestBase),
2429
typeof(JsonQueryTestBase<>),
30+
typeof(JsonQueryRelationalTestBase<>),
2531
typeof(JsonUpdateTestBase<>),
32+
typeof(AdHocJsonQueryRelationalTestBase),
33+
typeof(AdHocJsonQueryTestBase),
34+
typeof(OwnedJsonBulkUpdateRelationalTestBase<>),
35+
typeof(OwnedJsonCollectionRelationalTestBase<>),
36+
typeof(OwnedJsonMiscellaneousRelationalTestBase<>),
37+
typeof(OwnedJsonPrimitiveCollectionRelationalTestBase<>),
38+
typeof(OwnedJsonProjectionRelationalTestBase<>),
39+
typeof(OwnedJsonStructuralEqualityRelationalTestBase<>),
40+
typeof(ComplexJsonBulkUpdateRelationalTestBase<>),
41+
typeof(ComplexPropertiesCollectionTestBase<>),
42+
typeof(ComplexJsonCollectionRelationalTestBase<>),
43+
typeof(ComplexJsonMiscellaneousRelationalTestBase<>),
44+
typeof(ComplexJsonPrimitiveCollectionRelationalTestBase<>),
45+
typeof(ComplexJsonProjectionRelationalTestBase<>),
46+
typeof(ComplexPropertiesSetOperationsTestBase<>),
47+
typeof(ComplexJsonSetOperationsRelationalTestBase<>),
48+
typeof(ComplexJsonStructuralEqualityRelationalTestBase<>),
49+
typeof(OwnedTableSplittingPrimitiveCollectionRelationalTestBase<>),
2650
//Too complex table structure for Jet/MS Access. Too many indexes on table.
2751
//Caused by having too many navs (foreign keys) on a single table.
2852
//Also having a primary key (and its related foreign keys) being over more than 14 fields.
@@ -35,6 +59,7 @@ public class JetComplianceTest : RelationalComplianceTestBase
3559
typeof(UpdatesRelationalTestBase<>),
3660
//No user defined functions in MS Access/Jet
3761
typeof(UdfDbFunctionTestBase<>),
62+
typeof(StoredProcedureUpdateTestBase),
3863
];
3964

4065
protected override Assembly TargetAssembly { get; } = typeof(JetComplianceTest).Assembly;

test/EFCore.Jet.FunctionalTests/JetEndToEndTest.cs

Lines changed: 0 additions & 187 deletions
Original file line numberDiff line numberDiff line change
@@ -37,193 +37,6 @@ public JetEndToEndTest(JetFixture fixture)
3737
Fixture.TestSqlLoggerFactory.Clear();
3838
}
3939

40-
[ConditionalFact]
41-
public async Task Can_use_decimal_and_byte_as_identity_columns()
42-
{
43-
await using var testDatabase = await JetTestStore.CreateInitializedAsync(DatabaseName);
44-
var nownNum1 = new NownNum { Id = 77.0m, TheWalrus = "Crying" };
45-
var nownNum2 = new NownNum { Id = 78.0m, TheWalrus = "Walrus" };
46-
47-
var numNum1 = new NumNum { TheWalrus = "I" };
48-
var numNum2 = new NumNum { TheWalrus = "Am" };
49-
50-
var anNum1 = new AnNum { TheWalrus = "Goo goo" };
51-
var anNum2 = new AnNum { TheWalrus = "g'joob" };
52-
53-
var adNum1 = new AdNum { TheWalrus = "Eggman" };
54-
var adNum2 = new AdNum { TheWalrus = "Eggmen" };
55-
56-
var byteNownNum1 = new ByteNownNum { Id = 77, Lucy = "Tangerine" };
57-
var byteNownNum2 = new ByteNownNum { Id = 78, Lucy = "Trees" };
58-
59-
var byteNum1 = new ByteNum { Lucy = "Marmalade" };
60-
var byteNum2 = new ByteNum { Lucy = "Skies" };
61-
62-
var byteAnNum1 = new ByteAnNum { Lucy = "Cellophane" };
63-
var byteAnNum2 = new ByteAnNum { Lucy = "Flowers" };
64-
65-
var byteAdNum1 = new ByteAdNum { Lucy = "Kaleidoscope" };
66-
var byteAdNum2 = new ByteAdNum { Lucy = "Eyes" };
67-
68-
decimal[] preSaveValues;
69-
byte[] preSaveByteValues;
70-
71-
var options = Fixture.CreateOptions(testDatabase);
72-
using (var context = new NumNumContext(options))
73-
{
74-
context.Database.EnsureCreatedResiliently();
75-
76-
context.AddRange(
77-
nownNum1, nownNum2, numNum1, numNum2, adNum1, adNum2, anNum1, anNum2,
78-
byteNownNum1, byteNownNum2, byteNum1, byteNum2, byteAdNum1, byteAdNum2, byteAnNum1, byteAnNum2);
79-
80-
preSaveValues = [numNum1.Id, numNum2.Id, adNum1.Id, adNum2.Id, anNum1.Id, anNum2.Id];
81-
82-
preSaveByteValues = [byteNum1.Id, byteNum2.Id, byteAdNum1.Id, byteAdNum2.Id, byteAnNum1.Id, byteAnNum2.Id];
83-
84-
context.SaveChanges();
85-
}
86-
87-
using (var context = new NumNumContext(options))
88-
{
89-
Assert.Equal(nownNum1.Id, context.NownNums.Single(e => e.TheWalrus == "Crying").Id);
90-
Assert.Equal(nownNum2.Id, context.NownNums.Single(e => e.TheWalrus == "Walrus").Id);
91-
Assert.Equal(77.0m, nownNum1.Id);
92-
Assert.Equal(78.0m, nownNum2.Id);
93-
94-
Assert.Equal(numNum1.Id, context.NumNums.Single(e => e.TheWalrus == "I").Id);
95-
Assert.Equal(numNum2.Id, context.NumNums.Single(e => e.TheWalrus == "Am").Id);
96-
Assert.NotEqual(numNum1.Id, preSaveValues[0]);
97-
Assert.NotEqual(numNum2.Id, preSaveValues[1]);
98-
99-
Assert.Equal(anNum1.Id, context.AnNums.Single(e => e.TheWalrus == "Goo goo").Id);
100-
Assert.Equal(anNum2.Id, context.AnNums.Single(e => e.TheWalrus == "g'joob").Id);
101-
Assert.NotEqual(adNum1.Id, preSaveValues[2]);
102-
Assert.NotEqual(adNum2.Id, preSaveValues[3]);
103-
104-
Assert.Equal(adNum1.Id, context.AdNums.Single(e => e.TheWalrus == "Eggman").Id);
105-
Assert.Equal(adNum2.Id, context.AdNums.Single(e => e.TheWalrus == "Eggmen").Id);
106-
Assert.NotEqual(anNum1.Id, preSaveValues[4]);
107-
Assert.NotEqual(anNum2.Id, preSaveValues[5]);
108-
109-
Assert.Equal(byteNownNum1.Id, context.ByteNownNums.Single(e => e.Lucy == "Tangerine").Id);
110-
Assert.Equal(byteNownNum2.Id, context.ByteNownNums.Single(e => e.Lucy == "Trees").Id);
111-
Assert.Equal(77, byteNownNum1.Id);
112-
Assert.Equal(78, byteNownNum2.Id);
113-
114-
Assert.Equal(byteNum1.Id, context.ByteNums.Single(e => e.Lucy == "Marmalade").Id);
115-
Assert.Equal(byteNum2.Id, context.ByteNums.Single(e => e.Lucy == "Skies").Id);
116-
Assert.NotEqual(byteNum1.Id, preSaveByteValues[0]);
117-
Assert.NotEqual(byteNum2.Id, preSaveByteValues[1]);
118-
119-
Assert.Equal(byteAnNum1.Id, context.ByteAnNums.Single(e => e.Lucy == "Cellophane").Id);
120-
Assert.Equal(byteAnNum2.Id, context.ByteAnNums.Single(e => e.Lucy == "Flowers").Id);
121-
Assert.NotEqual(byteAdNum1.Id, preSaveByteValues[2]);
122-
Assert.NotEqual(byteAdNum2.Id, preSaveByteValues[3]);
123-
124-
Assert.Equal(byteAdNum1.Id, context.ByteAdNums.Single(e => e.Lucy == "Kaleidoscope").Id);
125-
Assert.Equal(byteAdNum2.Id, context.ByteAdNums.Single(e => e.Lucy == "Eyes").Id);
126-
Assert.NotEqual(byteAnNum1.Id, preSaveByteValues[4]);
127-
Assert.NotEqual(byteAnNum2.Id, preSaveByteValues[5]);
128-
}
129-
}
130-
131-
private class NumNumContext(DbContextOptions options) : DbContext(options)
132-
{
133-
public DbSet<NownNum> NownNums { get; set; }
134-
public DbSet<NumNum> NumNums { get; set; }
135-
public DbSet<AnNum> AnNums { get; set; }
136-
public DbSet<AdNum> AdNums { get; set; }
137-
138-
public DbSet<ByteNownNum> ByteNownNums { get; set; }
139-
public DbSet<ByteNum> ByteNums { get; set; }
140-
public DbSet<ByteAnNum> ByteAnNums { get; set; }
141-
public DbSet<ByteAdNum> ByteAdNums { get; set; }
142-
143-
protected override void OnModelCreating(ModelBuilder modelBuilder)
144-
{
145-
modelBuilder
146-
.Entity<NumNum>()
147-
.Property(e => e.Id)
148-
.HasColumnType("numeric(18, 0)")
149-
.UseJetIdentityColumn();
150-
151-
modelBuilder
152-
.Entity<AdNum>()
153-
.Property(e => e.Id)
154-
.HasColumnType("decimal(10, 0)")
155-
.ValueGeneratedOnAdd();
156-
157-
modelBuilder
158-
.Entity<ByteNum>()
159-
.Property(e => e.Id)
160-
.UseJetIdentityColumn();
161-
162-
modelBuilder
163-
.Entity<ByteAdNum>()
164-
.Property(e => e.Id)
165-
.ValueGeneratedOnAdd();
166-
167-
modelBuilder
168-
.Entity<NownNum>()
169-
.Property(e => e.Id)
170-
.HasColumnType("numeric(18, 0)");
171-
}
172-
}
173-
174-
private class NownNum
175-
{
176-
public decimal Id { get; set; }
177-
public string TheWalrus { get; set; }
178-
}
179-
180-
private class NumNum
181-
{
182-
public decimal Id { get; set; }
183-
public string TheWalrus { get; set; }
184-
}
185-
186-
private class AnNum
187-
{
188-
[Column(TypeName = "decimal(18, 0)")]
189-
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
190-
public decimal Id { get; set; }
191-
192-
public string TheWalrus { get; set; }
193-
}
194-
195-
private class AdNum
196-
{
197-
public decimal Id { get; set; }
198-
public string TheWalrus { get; set; }
199-
}
200-
201-
private class ByteNownNum
202-
{
203-
public byte Id { get; set; }
204-
public string Lucy { get; set; }
205-
}
206-
207-
private class ByteNum
208-
{
209-
public byte Id { get; set; }
210-
public string Lucy { get; set; }
211-
}
212-
213-
private class ByteAnNum
214-
{
215-
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
216-
public byte Id { get; set; }
217-
218-
public string Lucy { get; set; }
219-
}
220-
221-
private class ByteAdNum
222-
{
223-
public byte Id { get; set; }
224-
public string Lucy { get; set; }
225-
}
226-
22740
[ConditionalFact]
22841
public async Task Can_use_string_enum_or_byte_array_as_key()
22942
{

0 commit comments

Comments
 (0)