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
5 changes: 5 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
dist: trusty
sudo: required

language: c

services:
- docker

before_install:
- sudo /etc/init.d/mysql stop
- sudo /etc/init.d/postgresql stop

script:
- docker-compose -f docker-compose-test.yaml up --force-recreate --exit-code-from test-runner --build test-runner
2 changes: 1 addition & 1 deletion Dockerfile-test
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM microsoft/dotnet:1.1.2-sdk
FROM microsoft/dotnet:2.0.0-sdk
RUN apt-get update && apt-get install -y netcat
COPY /src /src
COPY /test /test
Expand Down
7 changes: 7 additions & 0 deletions docker-compose-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ services:
depends_on:
- mysql
- mssql
- pgsql
mysql:
image: mysql
container_name: dotnet-test-mysql
Expand All @@ -23,3 +24,9 @@ services:
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "Rea11ytrong_3"
pgsql:
image: postgres
environment:
POSTGRES_PASSWORD: "Rea11ytrong_3"
POSTGRES_USER: "tester"
POSTGRES_DB: "dotnettest"
33 changes: 26 additions & 7 deletions src/DatatablesParser/DatatablesParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,18 @@ public class Parser<T> where T : class
private bool _sortDisabled = false;


private Type[] _translatable =
private Type[] _convertable =
{
typeof(string)

typeof(int),
typeof(Nullable<int>),
typeof(decimal),
typeof(Nullable<decimal>),
typeof(float),
typeof(Nullable<float>),
typeof(double),
typeof(Nullable<double>),
typeof(DateTime),
typeof(Nullable<DateTime>)
};

public Parser(IEnumerable<KeyValuePair<string, StringValues>> configParams, IQueryable<T> queriable)
Expand Down Expand Up @@ -239,14 +247,23 @@ private Expression<Func<T, bool>> GenerateEntityFilter()
foreach (var propMap in _propertyMap)
{
var property = propMap.Value.Property;

if (!property.CanWrite || !propMap.Value.Searchable || !_translatable.Any(t => t == property.PropertyType) )
var isString = property.PropertyType == typeof(string);
if (!property.CanWrite || !propMap.Value.Searchable || (!_convertable.Any(t => t == property.PropertyType) && !isString ) )
{
continue;
}

Expression propExp = Expression.Property(paramExpression, property);

if (!isString)
{
var toString = property.PropertyType.GetMethod("ToString", Type.EmptyTypes);

var propExp = Expression.Property(paramExpression, property);
var toLower = Expression.Call(propExp,typeof(string).GetMethod("ToLower", new Type[0]));
propExp = Expression.Call(propExp, toString);

}

var toLower = Expression.Call(propExp,typeof(string).GetMethod("ToLower", Type.EmptyTypes));

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

Expand Down Expand Up @@ -279,6 +296,8 @@ private class PropertyMapping
public string SearchInput { get; set; } //Not yet implemented
}



}
public class FormatedList<T>
{
Expand Down
2 changes: 1 addition & 1 deletion src/aspnet-core-sample/aspnet-core-sample.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview2-final" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
</ItemGroup>

<ItemGroup>
Expand Down
13 changes: 7 additions & 6 deletions test/DatatablesParser.Tests/DatatablesParser.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp1.1.2</TargetFramework>
<TargetFramework>netcoreapp2.0</TargetFramework>
<AssemblyName>DatatablesParser.Tests</AssemblyName>
<PackageId>DatatablesParser.Tests</PackageId>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="../../src/DatatablesParser/DatatablesParser.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.8-dmr" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.0.0" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.0-rtm-10058" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
</ItemGroup>
</Project>
</Project>
36 changes: 36 additions & 0 deletions test/DatatablesParser.Tests/EFlogger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using Microsoft.Extensions.Logging;
using System;
using System.IO;

namespace DataTablesParser.Tests
{
public class EFlogger : ILoggerProvider
{
public ILogger CreateLogger(string categoryName)
{
return new MyLogger();
}

public void Dispose()
{ }

private class MyLogger : ILogger
{
public bool IsEnabled(LogLevel logLevel)
{
return true;
}

public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{

Console.WriteLine(formatter(state, exception));
}

public IDisposable BeginScope<TState>(TState state)
{
return null;
}
}
}
}
6 changes: 3 additions & 3 deletions test/DatatablesParser.Tests/LinqToObjectTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public void TotalRecordsTest()

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

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

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

Expand All @@ -39,7 +39,7 @@ public void TotalResultsTest()

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

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

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

Expand All @@ -58,7 +58,7 @@ public void TotalDisplayTest()

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

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

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

Expand Down
6 changes: 3 additions & 3 deletions test/DatatablesParser.Tests/MssqlEntityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public void TotalRecordsTest()

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

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

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

Expand All @@ -39,7 +39,7 @@ public void TotalResultsTest()

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

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

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

Expand All @@ -58,7 +58,7 @@ public void TotalDisplayTest()

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

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

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

Expand Down
6 changes: 3 additions & 3 deletions test/DatatablesParser.Tests/MysqlEntityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public void TotalRecordsTest()

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

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

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

Expand All @@ -39,7 +39,7 @@ public void TotalResultsTest()

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

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

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

Expand All @@ -58,7 +58,7 @@ public void TotalDisplayTest()

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

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

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

Expand Down
69 changes: 69 additions & 0 deletions test/DatatablesParser.Tests/PgsqlEntityTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
using System;
using Xunit;
using DataTablesParser;
using System.Linq;
using Microsoft.Extensions.Primitives;

namespace DataTablesParser.Tests
{

public class PgsqlEntityTests
{

[Fact]
public void TotalRecordsTest()
{
var context = TestHelper.GetPgsqlContext();

var p = TestHelper.CreateParams();

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

Console.WriteLine("Pgsql - Total People TotalRecordsTest: {0}",context.People.Count());

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

}

[Fact]
public void TotalResultsTest()
{
var context = TestHelper.GetPgsqlContext();

var p = TestHelper.CreateParams();

var resultLength = 3;

//override display length
p[Constants.DISPLAY_LENGTH] = new StringValues(Convert.ToString(resultLength));

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

Console.WriteLine("Pgsql - Total People TotalResultsTest: {0}",context.People.Count());

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

}

[Fact]
public void TotalDisplayTest()
{
var context = TestHelper.GetPgsqlContext();
var p = TestHelper.CreateParams();
var displayLength = 1;


//Set filter parameter
p[Constants.SEARCH_KEY] = new StringValues("Cromie");

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

Console.WriteLine("Pgsql - Total People TotalDisplayTest: {0}",context.People.Count());

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

}


}
}
Loading