Skip to content

Commit

Permalink
Fixed logic in Enumerable path and added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Garvin authored and Garvin committed Nov 19, 2017
1 parent 6a78c95 commit 4635e7e
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 6 deletions.
18 changes: 13 additions & 5 deletions src/DatatablesParser/DatatablesParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -246,20 +246,28 @@ private bool EnumerablFilter(T item)
{

var globalFilter = _config[Constants.SEARCH_KEY];

var globalMatch = false;
var individualMatch = true;
foreach (var map in _propertyMap.Where(m => m.Value.Searchable))
{
var propValue = Convert.ToString(map.Value.Property.GetValue(item, null)).ToLower();
if (!string.IsNullOrWhiteSpace(globalFilter) && propValue.Contains(globalFilter.ToLower()))
{
return true;
globalMatch = true;
}
if (!string.IsNullOrWhiteSpace(map.Value.Filter) && propValue.Contains(map.Value.Filter.ToLower()))
if (!string.IsNullOrWhiteSpace(map.Value.Filter) && !propValue.Contains(map.Value.Filter.ToLower()))
{
return true;
individualMatch = false;
}
}
return false;

if(!string.IsNullOrWhiteSpace(globalFilter))
{
return globalMatch && individualMatch;
}

return individualMatch;

}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion src/DatatablesParser/DatatablesParser.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<TargetFramework>netstandard1.3</TargetFramework>
<AssemblyName>DatatablesParser</AssemblyName>
<PackageId>DatatablesParser-core</PackageId>
<PackageVersion>1.2.0</PackageVersion>
<PackageVersion>1.2.1</PackageVersion>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<PackageTags>C# Datatables Datatables.net javascript parser json Linq entity framework asp.net mvc grid table database query builder core</PackageTags>
<PackageProjectUrl>https://github.com/garvincasimir/csharp-datatables-parser</PackageProjectUrl>
Expand Down
20 changes: 20 additions & 0 deletions test/DatatablesParser.Tests/LinqToObjectTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,26 @@ public void TotalDisplayIndividualTest()

}

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


//Set filter parameter
p[Constants.SEARCH_KEY] = new StringValues("a");
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";

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

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

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

}

}
}
22 changes: 22 additions & 0 deletions test/DatatablesParser.Tests/MssqlEntityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,28 @@ public void TotalDisplayCustomFormatTest()

}

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


//Set filter parameter
p[Constants.SEARCH_KEY] = new StringValues("a");
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";

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

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

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

}



}
}
22 changes: 22 additions & 0 deletions test/DatatablesParser.Tests/MysqlEntityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,28 @@ public void TotalDisplayCustomFormatTest()

}

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


//Set filter parameter
p[Constants.SEARCH_KEY] = new StringValues("a");
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";

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

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

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

}



}
}
20 changes: 20 additions & 0 deletions test/DatatablesParser.Tests/PgsqlEntityTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,26 @@ public void TotalDisplayCustomFormatTest()

}

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


//Set filter parameter
p[Constants.SEARCH_KEY] = new StringValues("a");
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";

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

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

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

}

}
}

0 comments on commit 4635e7e

Please sign in to comment.