Skip to content

Commit 61fa083

Browse files
shps951023NickCraver
authored andcommitted
Add unit test for SqlBuilder with Dapper query (#1369)
1 parent 1922ef4 commit 61fa083

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

Dapper.Tests/Dapper.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
</PropertyGroup>
1414

1515
<ItemGroup>
16+
<ProjectReference Include="..\Dapper.SqlBuilder\Dapper.SqlBuilder.csproj" />
1617
<ProjectReference Include="..\Dapper\Dapper.csproj" />
1718
<ProjectReference Include="..\Dapper.Contrib\Dapper.Contrib.csproj" />
1819
<ProjectReference Include="..\Dapper.ProviderTools\Dapper.ProviderTools.csproj" />

Dapper.Tests/SqlBuilderTests.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using System.Linq;
2+
using Xunit;
3+
4+
namespace Dapper.Tests
5+
{
6+
[Collection("SqlBuilderTests")]
7+
public sealed class SystemSqlClientSqlBuilderTests : SqlBuilderTests<SystemSqlClientProvider> { }
8+
#if MSSQLCLIENT
9+
[Collection("SqlBuilderTests")]
10+
public sealed class MicrosoftSqlClientSqlBuilderTests : SqlBuilderTests<MicrosoftSqlClientProvider> { }
11+
#endif
12+
public abstract class SqlBuilderTests<TProvider> : TestBase<TProvider> where TProvider : DatabaseProvider
13+
{
14+
[Fact]
15+
public void TestSqlBuilderWithDapperQuery()
16+
{
17+
var sb = new SqlBuilder();
18+
var template = sb.AddTemplate("SELECT /**select**/ FROM #Users /**where**/");
19+
sb.Where("Age <= @Age", new { Age = 18 })
20+
.Where("Country = @Country", new { Country = "USA" })
21+
.Select("Name,Age,Country");
22+
23+
const string createSql = @"
24+
create table #Users (Name varchar(20),Age int,Country nvarchar(5));
25+
insert #Users values('Sam',16,'USA'),('Tom',25,'UK'),('Henry',14,'UK')";
26+
try
27+
{
28+
connection.Execute(createSql);
29+
30+
var result = connection.Query(template.RawSql,template.Parameters).ToArray();
31+
32+
Assert.Equal("SELECT Name,Age,Country\n FROM #Users WHERE Age <= @Age AND Country = @Country\n", template.RawSql);
33+
34+
Assert.Single(result);
35+
36+
Assert.Equal(16, (int)result[0].Age);
37+
Assert.Equal("Sam", (string)result[0].Name);
38+
Assert.Equal("USA", (string)result[0].Country);
39+
}
40+
finally
41+
{
42+
connection.Execute("drop table #Users");
43+
}
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)