Skip to content

Commit 15357d3

Browse files
Merge pull request #24 from garvincasimir/ef-core-2
Ef core 2 in tests and add pgsql
2 parents b738ff9 + e9af093 commit 15357d3

File tree

13 files changed

+201
-31
lines changed

13 files changed

+201
-31
lines changed

.travis.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1+
dist: trusty
12
sudo: required
23

34
language: c
45

56
services:
67
- docker
78

9+
before_install:
10+
- sudo /etc/init.d/mysql stop
11+
- sudo /etc/init.d/postgresql stop
12+
813
script:
914
- docker-compose -f docker-compose-test.yaml up --force-recreate --exit-code-from test-runner --build test-runner

Dockerfile-test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM microsoft/dotnet:1.1.2-sdk
1+
FROM microsoft/dotnet:2.0.0-sdk
22
RUN apt-get update && apt-get install -y netcat
33
COPY /src /src
44
COPY /test /test

docker-compose-test.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ services:
88
depends_on:
99
- mysql
1010
- mssql
11+
- pgsql
1112
mysql:
1213
image: mysql
1314
container_name: dotnet-test-mysql
@@ -23,3 +24,9 @@ services:
2324
environment:
2425
ACCEPT_EULA: "Y"
2526
SA_PASSWORD: "Rea11ytrong_3"
27+
pgsql:
28+
image: postgres
29+
environment:
30+
POSTGRES_PASSWORD: "Rea11ytrong_3"
31+
POSTGRES_USER: "tester"
32+
POSTGRES_DB: "dotnettest"

src/DatatablesParser/DatatablesParser.cs

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,18 @@ public class Parser<T> where T : class
2121
private bool _sortDisabled = false;
2222

2323

24-
private Type[] _translatable =
24+
private Type[] _convertable =
2525
{
26-
typeof(string)
27-
26+
typeof(int),
27+
typeof(Nullable<int>),
28+
typeof(decimal),
29+
typeof(Nullable<decimal>),
30+
typeof(float),
31+
typeof(Nullable<float>),
32+
typeof(double),
33+
typeof(Nullable<double>),
34+
typeof(DateTime),
35+
typeof(Nullable<DateTime>)
2836
};
2937

3038
public Parser(IEnumerable<KeyValuePair<string, StringValues>> configParams, IQueryable<T> queriable)
@@ -239,14 +247,23 @@ private Expression<Func<T, bool>> GenerateEntityFilter()
239247
foreach (var propMap in _propertyMap)
240248
{
241249
var property = propMap.Value.Property;
242-
243-
if (!property.CanWrite || !propMap.Value.Searchable || !_translatable.Any(t => t == property.PropertyType) )
250+
var isString = property.PropertyType == typeof(string);
251+
if (!property.CanWrite || !propMap.Value.Searchable || (!_convertable.Any(t => t == property.PropertyType) && !isString ) )
244252
{
245253
continue;
246254
}
255+
256+
Expression propExp = Expression.Property(paramExpression, property);
257+
258+
if (!isString)
259+
{
260+
var toString = property.PropertyType.GetMethod("ToString", Type.EmptyTypes);
247261

248-
var propExp = Expression.Property(paramExpression, property);
249-
var toLower = Expression.Call(propExp,typeof(string).GetMethod("ToLower", new Type[0]));
262+
propExp = Expression.Call(propExp, toString);
263+
264+
}
265+
266+
var toLower = Expression.Call(propExp,typeof(string).GetMethod("ToLower", Type.EmptyTypes));
250267

251268
searchProps.Add(Expression.Call(toLower, typeof(string).GetMethod("Contains"), searchExpression));
252269

@@ -279,6 +296,8 @@ private class PropertyMapping
279296
public string SearchInput { get; set; } //Not yet implemented
280297
}
281298

299+
300+
282301
}
283302
public class FormatedList<T>
284303
{

src/aspnet-core-sample/aspnet-core-sample.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview2-final" />
11+
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
1212
</ItemGroup>
1313

1414
<ItemGroup>
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFramework>netcoreapp1.1.2</TargetFramework>
3+
<TargetFramework>netcoreapp2.0</TargetFramework>
44
<AssemblyName>DatatablesParser.Tests</AssemblyName>
55
<PackageId>DatatablesParser.Tests</PackageId>
66
</PropertyGroup>
77
<ItemGroup>
88
<ProjectReference Include="../../src/DatatablesParser/DatatablesParser.csproj" />
99
</ItemGroup>
1010
<ItemGroup>
11-
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.2" />
12-
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
13-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
14-
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.8-dmr" />
11+
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />
12+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
13+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.0.0" />
14+
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.0-rtm-10058" />
15+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
1516
<PackageReference Include="xunit" Version="2.2.0" />
1617
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
1718
</ItemGroup>
18-
</Project>
19+
</Project>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Microsoft.Extensions.Logging;
2+
using System;
3+
using System.IO;
4+
5+
namespace DataTablesParser.Tests
6+
{
7+
public class EFlogger : ILoggerProvider
8+
{
9+
public ILogger CreateLogger(string categoryName)
10+
{
11+
return new MyLogger();
12+
}
13+
14+
public void Dispose()
15+
{ }
16+
17+
private class MyLogger : ILogger
18+
{
19+
public bool IsEnabled(LogLevel logLevel)
20+
{
21+
return true;
22+
}
23+
24+
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
25+
{
26+
27+
Console.WriteLine(formatter(state, exception));
28+
}
29+
30+
public IDisposable BeginScope<TState>(TState state)
31+
{
32+
return null;
33+
}
34+
}
35+
}
36+
}

test/DatatablesParser.Tests/LinqToObjectTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void TotalRecordsTest()
1919

2020
var parser = new Parser<Person>(p, context.People.AsQueryable());
2121

22-
Console.WriteLine("Total People TotalRecordsTest: {0}",context.People.Count());
22+
Console.WriteLine("InMemory - Total People TotalRecordsTest: {0}",context.People.Count());
2323

2424
Assert.Equal(context.People.Count(),parser.Parse().recordsTotal);
2525

@@ -39,7 +39,7 @@ public void TotalResultsTest()
3939

4040
var parser = new Parser<Person>(p, context.People.AsQueryable());
4141

42-
Console.WriteLine("Total People TotalResultsTest: {0}",context.People.Count());
42+
Console.WriteLine("InMemory - Total People TotalResultsTest: {0}",context.People.Count());
4343

4444
Assert.Equal(resultLength, parser.Parse().data.Count);
4545

@@ -58,7 +58,7 @@ public void TotalDisplayTest()
5858

5959
var parser = new Parser<Person>(p, context.People.ToList().AsQueryable());
6060

61-
Console.WriteLine("Total People TotalDisplayTest: {0}",context.People.Count());
61+
Console.WriteLine("InMemory - Total People TotalDisplayTest: {0}",context.People.Count());
6262

6363
Assert.Equal(displayLength, parser.Parse().recordsFiltered);
6464

test/DatatablesParser.Tests/MssqlEntityTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void TotalRecordsTest()
1919

2020
var parser = new Parser<Person>(p, context.People.AsQueryable());
2121

22-
Console.WriteLine("Total People TotalRecordsTest: {0}",context.People.Count());
22+
Console.WriteLine("Mssql - Total People TotalRecordsTest: {0}",context.People.Count());
2323

2424
Assert.Equal(context.People.Count(),parser.Parse().recordsTotal);
2525

@@ -39,7 +39,7 @@ public void TotalResultsTest()
3939

4040
var parser = new Parser<Person>(p, context.People.AsQueryable());
4141

42-
Console.WriteLine("Total People TotalResultsTest: {0}",context.People.Count());
42+
Console.WriteLine("Mssql - Total People TotalResultsTest: {0}",context.People.Count());
4343

4444
Assert.Equal(resultLength, parser.Parse().data.Count);
4545

@@ -58,7 +58,7 @@ public void TotalDisplayTest()
5858

5959
var parser = new Parser<Person>(p, context.People.AsQueryable());
6060

61-
Console.WriteLine("Total People TotalDisplayTest: {0}",context.People.Count());
61+
Console.WriteLine("Mssql - Total People TotalDisplayTest: {0}",context.People.Count());
6262

6363
Assert.Equal(displayLength, parser.Parse().recordsFiltered);
6464

test/DatatablesParser.Tests/MysqlEntityTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void TotalRecordsTest()
1919

2020
var parser = new Parser<Person>(p, context.People.AsQueryable());
2121

22-
Console.WriteLine("Total People TotalRecordsTest: {0}",context.People.Count());
22+
Console.WriteLine("Mysql - Total People TotalRecordsTest: {0}",context.People.Count());
2323

2424
Assert.Equal(context.People.Count(),parser.Parse().recordsTotal);
2525

@@ -39,7 +39,7 @@ public void TotalResultsTest()
3939

4040
var parser = new Parser<Person>(p, context.People.AsQueryable());
4141

42-
Console.WriteLine("Total People TotalResultsTest: {0}",context.People.Count());
42+
Console.WriteLine("Mysql - Total People TotalResultsTest: {0}",context.People.Count());
4343

4444
Assert.Equal(resultLength, parser.Parse().data.Count);
4545

@@ -58,7 +58,7 @@ public void TotalDisplayTest()
5858

5959
var parser = new Parser<Person>(p, context.People.AsQueryable());
6060

61-
Console.WriteLine("Total People TotalDisplayTest: {0}",context.People.Count());
61+
Console.WriteLine("Mysql - Total People TotalDisplayTest: {0}",context.People.Count());
6262

6363
Assert.Equal(displayLength, parser.Parse().recordsFiltered);
6464

0 commit comments

Comments
 (0)