Skip to content

Commit 4635e7e

Browse files
GarvinGarvin
authored andcommitted
Fixed logic in Enumerable path and added tests
1 parent 6a78c95 commit 4635e7e

File tree

6 files changed

+98
-6
lines changed

6 files changed

+98
-6
lines changed

src/DatatablesParser/DatatablesParser.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -246,20 +246,28 @@ private bool EnumerablFilter(T item)
246246
{
247247

248248
var globalFilter = _config[Constants.SEARCH_KEY];
249-
249+
var globalMatch = false;
250+
var individualMatch = true;
250251
foreach (var map in _propertyMap.Where(m => m.Value.Searchable))
251252
{
252253
var propValue = Convert.ToString(map.Value.Property.GetValue(item, null)).ToLower();
253254
if (!string.IsNullOrWhiteSpace(globalFilter) && propValue.Contains(globalFilter.ToLower()))
254255
{
255-
return true;
256+
globalMatch = true;
256257
}
257-
if (!string.IsNullOrWhiteSpace(map.Value.Filter) && propValue.Contains(map.Value.Filter.ToLower()))
258+
if (!string.IsNullOrWhiteSpace(map.Value.Filter) && !propValue.Contains(map.Value.Filter.ToLower()))
258259
{
259-
return true;
260+
individualMatch = false;
260261
}
261262
}
262-
return false;
263+
264+
if(!string.IsNullOrWhiteSpace(globalFilter))
265+
{
266+
return globalMatch && individualMatch;
267+
}
268+
269+
return individualMatch;
270+
263271
}
264272

265273
/// <summary>

src/DatatablesParser/DatatablesParser.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<TargetFramework>netstandard1.3</TargetFramework>
55
<AssemblyName>DatatablesParser</AssemblyName>
66
<PackageId>DatatablesParser-core</PackageId>
7-
<PackageVersion>1.2.0</PackageVersion>
7+
<PackageVersion>1.2.1</PackageVersion>
88
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
99
<PackageTags>C# Datatables Datatables.net javascript parser json Linq entity framework asp.net mvc grid table database query builder core</PackageTags>
1010
<PackageProjectUrl>https://github.com/garvincasimir/csharp-datatables-parser</PackageProjectUrl>

test/DatatablesParser.Tests/LinqToObjectTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,26 @@ public void TotalDisplayIndividualTest()
8484

8585
}
8686

87+
[Fact]
88+
public void TotalDisplayIndividualMutiTest()
89+
{
90+
var context = TestHelper.GetInMemoryContext();
91+
var p = TestHelper.CreateParams();
92+
var displayLength = 1;
93+
94+
95+
//Set filter parameter
96+
p[Constants.SEARCH_KEY] = new StringValues("a");
97+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
98+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";
99+
100+
var parser = new Parser<Person>(p, context.People);
101+
102+
Console.WriteLine("InMemory - Total People TotalDisplayIndividualMutiTest: {0}",context.People.Count());
103+
104+
Assert.Equal(displayLength, parser.Parse().recordsFiltered);
105+
106+
}
87107

88108
}
89109
}

test/DatatablesParser.Tests/MssqlEntityTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,28 @@ public void TotalDisplayCustomFormatTest()
105105

106106
}
107107

108+
[Fact]
109+
public void TotalDisplayIndividualMutiTest()
110+
{
111+
var context = TestHelper.GetInMemoryContext();
112+
var p = TestHelper.CreateParams();
113+
var displayLength = 1;
114+
115+
116+
//Set filter parameter
117+
p[Constants.SEARCH_KEY] = new StringValues("a");
118+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
119+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";
120+
121+
var parser = new Parser<Person>(p, context.People);
122+
123+
Console.WriteLine("Mssql - Total People TotalDisplayIndividualMutiTest: {0}",context.People.Count());
124+
125+
Assert.Equal(displayLength, parser.Parse().recordsFiltered);
126+
127+
}
128+
129+
108130

109131
}
110132
}

test/DatatablesParser.Tests/MysqlEntityTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,28 @@ public void TotalDisplayCustomFormatTest()
107107

108108
}
109109

110+
[Fact]
111+
public void TotalDisplayIndividualMutiTest()
112+
{
113+
var context = TestHelper.GetInMemoryContext();
114+
var p = TestHelper.CreateParams();
115+
var displayLength = 1;
116+
117+
118+
//Set filter parameter
119+
p[Constants.SEARCH_KEY] = new StringValues("a");
120+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
121+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";
122+
123+
var parser = new Parser<Person>(p, context.People);
124+
125+
Console.WriteLine("MySql - Total People TotalDisplayIndividualMutiTest: {0}",context.People.Count());
126+
127+
Assert.Equal(displayLength, parser.Parse().recordsFiltered);
128+
129+
}
130+
131+
110132

111133
}
112134
}

test/DatatablesParser.Tests/PgsqlEntityTests.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,26 @@ public void TotalDisplayCustomFormatTest()
107107

108108
}
109109

110+
[Fact]
111+
public void TotalDisplayIndividualMutiTest()
112+
{
113+
var context = TestHelper.GetInMemoryContext();
114+
var p = TestHelper.CreateParams();
115+
var displayLength = 1;
116+
117+
118+
//Set filter parameter
119+
p[Constants.SEARCH_KEY] = new StringValues("a");
120+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "0")] = "omie";
121+
p[Constants.GetKey(Constants.SEARCH_VALUE_PROPERTY_FORMAT, "1")] = "mmer";
122+
123+
var parser = new Parser<Person>(p, context.People);
124+
125+
Console.WriteLine("Pgsql - Total People TotalDisplayIndividualMutiTest: {0}",context.People.Count());
126+
127+
Assert.Equal(displayLength, parser.Parse().recordsFiltered);
128+
129+
}
110130

111131
}
112132
}

0 commit comments

Comments
 (0)