Skip to content

Commit ee2bc87

Browse files
Add EFCore 3 tests (#371)
1 parent de3c448 commit ee2bc87

18 files changed

Lines changed: 119 additions & 133 deletions

appveyor.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ environment:
66
secure: qK/vt4/ihLipeamB7l+Dng==
77

88
install:
9+
# TODO remove when .NET Core 3.0 stable is available
10+
- nuget update -self
11+
- ps: "Invoke-WebRequest -Uri https://dot.net/v1/dotnet-install.ps1 -UseBasicParsing -OutFile $env:temp\\dotnet-install.ps1"
12+
- ps: "& $env:temp\\dotnet-install.ps1 -Architecture x64 -Version 3.0.100-preview7-012821 -InstallDir $env:ProgramFiles\\dotnet"
13+
914
- if defined RELEASE_KEY_SECRET (nuget install secure-file -ExcludeVersion -Verbosity quiet && secure-file\tools\secure-file -decrypt net\DevExtreme.AspNet.Data\release.snk.enc -secret %RELEASE_KEY_SECRET%)
1015
- nuget install -Verbosity quiet -ExcludeVersion -OutputDirectory . OpenCover
1116
- pip install -q codecov
@@ -46,6 +51,15 @@ test_script:
4651
-filter:"+[DevExtreme*]* -[DevExtreme.AspNet.Data.Tests]* -[DevExtreme.AspNet.Data.Tests.*]*"
4752
-output:coverage_netcore.xml
4853
54+
- >-
55+
OpenCover\tools\OpenCover.Console -returntargetcode -register:user -oldstyle
56+
-target:dotnet.exe
57+
-targetargs:"vstest
58+
net\DevExtreme.AspNet.Data.Tests.EFCore3\bin\Debug\netcoreapp3.0\DevExtreme.AspNet.Data.Tests.EFCore3.dll
59+
"
60+
-filter:"+[DevExtreme*]* -[DevExtreme.AspNet.Data.Tests]* -[DevExtreme.AspNet.Data.Tests.*]*"
61+
-output:coverage_netcore3.xml
62+
4963
- >-
5064
OpenCover\tools\OpenCover.Console -returntargetcode -register:user
5165
-target:%xunit20%\xunit.console.exe
@@ -64,7 +78,7 @@ after_test:
6478
- if defined RELEASE_KEY_SECRET dotnet pack net\DevExtreme.AspNet.Data --configuration=Release
6579

6680
on_success:
67-
- codecov -X gcov -f coverage_netcore.xml coverage_netfx.xml js-test/coverage/lcov.info
81+
- codecov -X gcov -f coverage_netcore.xml coverage_netcore3.xml coverage_netfx.xml js-test/coverage/lcov.info
6882

6983
artifacts:
7084
- path: net\DevExtreme.AspNet.Data\bin\Release\*.nupkg
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
using Xunit;
2+
3+
[assembly: CollectionBehavior(DisableTestParallelization = true)]
4+
5+
#if EFCORE3
6+
#warning TODO fix coverage report, https://github.com/OpenCover/opencover/issues/894
7+
#endif

net/DevExtreme.AspNet.Data.Tests.EFCore1/Bug120.cs renamed to net/DevExtreme.AspNet.Data.Tests.EFCore/Bug120.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.ComponentModel.DataAnnotations;
42
using System.ComponentModel.DataAnnotations.Schema;
5-
using System.Text;
3+
using System.Threading.Tasks;
64
using Xunit;
75

8-
namespace DevExtreme.AspNet.Data.Tests.EFCore1 {
6+
namespace DevExtreme.AspNet.Data.Tests.EFCore {
97

108
public class Bug120 {
119

@@ -15,8 +13,8 @@ public class DataItem {
1513
}
1614

1715
[Fact]
18-
public void Scenario() {
19-
TestDbContext.Exec(context => {
16+
public async Task Scenario() {
17+
await TestDbContext.ExecAsync(context => {
2018
var dbSet = context.Set<DataItem>();
2119
var result = DataSourceLoader.Load(dbSet, new SampleLoadOptions { RequireTotalCount = true });
2220
Assert.Equal(0, result.totalCount);

net/DevExtreme.AspNet.Data.Tests.EFCore2/Bug326.cs renamed to net/DevExtreme.AspNet.Data.Tests.EFCore/Bug326.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using System.Threading.Tasks;
66
using Xunit;
77

8-
namespace DevExtreme.AspNet.Data.Tests.EFCore2 {
8+
namespace DevExtreme.AspNet.Data.Tests.EFCore {
99
public class Bug326 {
1010

1111
public abstract class EntityBase {

net/DevExtreme.AspNet.Data.Tests.EFCore2/PaginateViaPrimaryKey.cs renamed to net/DevExtreme.AspNet.Data.Tests.EFCore/PaginateViaPrimaryKey.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System.Threading.Tasks;
55
using Xunit;
66

7-
namespace DevExtreme.AspNet.Data.Tests.EFCore2 {
7+
namespace DevExtreme.AspNet.Data.Tests.EFCore {
88

99
public class PaginateViaPrimaryKey {
1010

net/DevExtreme.AspNet.Data.Tests.EFCore2/RemoteGrouping.cs renamed to net/DevExtreme.AspNet.Data.Tests.EFCore/RemoteGrouping.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using System.Threading.Tasks;
66
using Xunit;
77

8-
namespace DevExtreme.AspNet.Data.Tests.EFCore2 {
8+
namespace DevExtreme.AspNet.Data.Tests.EFCore {
99

1010
public class RemoteGrouping : IAsyncLifetime {
1111

@@ -32,6 +32,31 @@ await TestDbContext.ExecAsync(async context => {
3232
});
3333
}
3434

35+
#if EFCORE1
36+
37+
[Fact]
38+
public async Task DisabledByDefault() {
39+
await TestDbContext.ExecAsync(context => {
40+
var dbSet = context.Set<DataItem>();
41+
42+
var loadOptions = new SampleLoadOptions {
43+
Group = new[] {
44+
new GroupingInfo {
45+
Selector = "Group",
46+
IsExpanded = false
47+
}
48+
}
49+
};
50+
51+
DataSourceLoader.Load(dbSet, loadOptions);
52+
53+
Assert.NotEmpty(loadOptions.ExpressionLog);
54+
Assert.DoesNotContain(loadOptions.ExpressionLog, i => i.Contains(".GroupBy"));
55+
});
56+
}
57+
58+
#else
59+
3560
[Fact]
3661
public async Task EnabledByDefault() {
3762
await TestDbContext.ExecAsync(context => {
@@ -78,6 +103,7 @@ await TestDbContext.ExecAsync(context => {
78103
});
79104
}
80105

106+
#endif
81107
}
82108

83109
}

net/DevExtreme.AspNet.Data.Tests.EFCore2/RemoteGroupingStress.cs renamed to net/DevExtreme.AspNet.Data.Tests.EFCore/RemoteGroupingStress.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
using System;
1+
#if !EFCORE1
2+
using System;
23
using System.ComponentModel.DataAnnotations.Schema;
34
using System.Threading.Tasks;
45
using Xunit;
56

6-
namespace DevExtreme.AspNet.Data.Tests.EFCore2 {
7+
namespace DevExtreme.AspNet.Data.Tests.EFCore {
78

89
public class RemoteGroupingStress {
910

@@ -16,7 +17,11 @@ public class DataItem : RemoteGroupingStressHelper.IEntity {
1617
public DateTime? NullDate { get; set; }
1718
}
1819

19-
[Fact]
20+
[Fact(
21+
#if EFCORE3
22+
Skip = "https://github.com/aspnet/EntityFrameworkCore/issues/16844"
23+
#endif
24+
)]
2025
public async Task Scenario() {
2126
await TestDbContext.ExecAsync(context => {
2227
var dbSet = context.Set<DataItem>();
@@ -31,3 +36,4 @@ await TestDbContext.ExecAsync(context => {
3136
}
3237

3338
}
39+
#endif

net/DevExtreme.AspNet.Data.Tests.EFCore2/Summary.cs renamed to net/DevExtreme.AspNet.Data.Tests.EFCore/Summary.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using System.Threading.Tasks;
44
using Xunit;
55

6-
namespace DevExtreme.AspNet.Data.Tests.EFCore2 {
6+
namespace DevExtreme.AspNet.Data.Tests.EFCore {
77

88
public class Summary {
99

@@ -23,10 +23,15 @@ await TestDbContext.ExecAsync(context => {
2323
dbSet.AddRange(SummaryTestHelper.GenerateTestData(() => new DataItem()));
2424
context.SaveChanges();
2525

26+
#if EFCORE1
27+
SummaryTestHelper.Run(dbSet);
28+
#else
2629
SummaryTestHelper.Run(dbSet, new[] { "count", "min", "max", "sum" });
2730
SummaryTestHelper.Run(dbSet, new[] { "avg" });
31+
#endif
2832
});
2933
}
3034

3135
}
36+
3237
}

net/DevExtreme.AspNet.Data.Tests.EFCore2/TestDbContext.cs renamed to net/DevExtreme.AspNet.Data.Tests.EFCore/TestDbContext.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
using Microsoft.EntityFrameworkCore;
2-
using Microsoft.EntityFrameworkCore.Diagnostics;
32
using System;
43
using System.Collections.Generic;
54
using System.Threading.Tasks;
65

7-
namespace DevExtreme.AspNet.Data.Tests.EFCore2 {
6+
namespace DevExtreme.AspNet.Data.Tests.EFCore {
87

98
class TestDbContext : DbContext {
109
static TestDbContext INSTANCE;
@@ -15,20 +14,26 @@ private TestDbContext(DbContextOptions options)
1514

1615
protected override void OnModelCreating(ModelBuilder modelBuilder) {
1716
modelBuilder.Entity<RemoteGrouping.DataItem>();
17+
#if !EFCORE1
1818
modelBuilder.Entity<RemoteGroupingStress.DataItem>();
19+
#endif
1920
modelBuilder.Entity<Summary.DataItem>();
21+
modelBuilder.Entity<Bug120.DataItem>();
2022
modelBuilder.Entity<Bug326.Entity>();
2123
modelBuilder.Entity<PaginateViaPrimaryKey.DataItem>().HasKey("K1", "K2");
2224
}
2325

2426
public static async Task ExecAsync(Func<TestDbContext, Task> action) {
2527
if(INSTANCE == null) {
26-
var helper = new SqlServerTestDbHelper("EFCore2");
28+
var efVersion = typeof(DbContext).Assembly.GetName().Version.Major;
29+
var helper = new SqlServerTestDbHelper("EFCore" + efVersion);
2730
helper.ResetDatabase();
2831

2932
var options = new DbContextOptionsBuilder()
3033
.UseSqlServer(helper.ConnectionString)
31-
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning))
34+
#if EFCORE2
35+
.ConfigureWarnings(warnings => warnings.Throw(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.QueryClientEvaluationWarning))
36+
#endif
3237
.Options;
3338

3439
INSTANCE = new TestDbContext(options);

net/DevExtreme.AspNet.Data.Tests.EFCore1/AssemblyInfo.cs

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)