Skip to content

Commit 2c844b6

Browse files
Delegate where(boolean) to WhereTrue/WhereFalse methods
1 parent bad6733 commit 2c844b6

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

QueryBuilder.Tests/GeneralTests.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,5 +435,61 @@ public void UnsafeLiteral_Update()
435435

436436
Assert.Equal("UPDATE [Table] SET [Count] = Count + 1", c[EngineCodes.SqlServer].ToString());
437437
}
438+
439+
[Fact]
440+
public void Passing_Boolean_To_Where_Should_Call_WhereTrue_Or_WhereFalse()
441+
{
442+
var query = new Query("Table").Where("Col", true);
443+
444+
var engines = new[] {
445+
EngineCodes.SqlServer,
446+
};
447+
448+
var c = Compilers.Compile(engines, query);
449+
450+
Assert.Equal("SELECT * FROM [Table] WHERE [Col] = cast(1 as bit)", c[EngineCodes.SqlServer].ToString());
451+
}
452+
453+
[Fact]
454+
public void Passing_Boolean_False_To_Where_Should_Call_WhereTrue_Or_WhereFalse()
455+
{
456+
var query = new Query("Table").Where("Col", false);
457+
458+
var engines = new[] {
459+
EngineCodes.SqlServer,
460+
};
461+
462+
var c = Compilers.Compile(engines, query);
463+
464+
Assert.Equal("SELECT * FROM [Table] WHERE [Col] = cast(0 as bit)", c[EngineCodes.SqlServer].ToString());
465+
}
466+
467+
[Fact]
468+
public void Passing_Negative_Boolean_To_Where_Should_Call_WhereTrue_Or_WhereFalse()
469+
{
470+
var query = new Query("Table").Where("Col", "!=", true);
471+
472+
var engines = new[] {
473+
EngineCodes.SqlServer,
474+
};
475+
476+
var c = Compilers.Compile(engines, query);
477+
478+
Assert.Equal("SELECT * FROM [Table] WHERE [Col] != cast(1 as bit)", c[EngineCodes.SqlServer].ToString());
479+
}
480+
481+
[Fact]
482+
public void Passing_Negative_Boolean_False_To_Where_Should_Call_WhereTrue_Or_WhereFalse()
483+
{
484+
var query = new Query("Table").Where("Col", "!=", false);
485+
486+
var engines = new[] {
487+
EngineCodes.SqlServer,
488+
};
489+
490+
var c = Compilers.Compile(engines, query);
491+
492+
Assert.Equal("SELECT * FROM [Table] WHERE [Col] != cast(0 as bit)", c[EngineCodes.SqlServer].ToString());
493+
}
438494
}
439495
}

QueryBuilder/Base.Where.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ public Q Where(string column, string op, object value)
1818
return Not(op != "=").WhereNull(column);
1919
}
2020

21+
if (value is bool boolValue)
22+
{
23+
if (op != "=")
24+
{
25+
Not();
26+
}
27+
28+
return boolValue ? WhereTrue(column) : WhereFalse(column);
29+
}
30+
2131
return AddComponent("where", new BasicCondition
2232
{
2333
Column = column,

0 commit comments

Comments
 (0)