-
-
Notifications
You must be signed in to change notification settings - Fork 107
Expand file tree
/
Copy pathSqlExpressionTests.cs
More file actions
42 lines (36 loc) · 1.44 KB
/
Copy pathSqlExpressionTests.cs
File metadata and controls
42 lines (36 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using Xunit;
namespace Dommel.Tests;
public class SqlExpressionTests
{
[Fact]
public void ToString_ReturnsSql()
{
var sqlExpression = new SqlExpression<Product>(new SqlServerSqlBuilder());
var sql = sqlExpression.Where(p => p.Name == "Chai").ToSql();
Assert.Equal(" where [Products].[FullName] = @p1", sql);
Assert.Equal(sql, sqlExpression.ToString());
}
[Fact]
public void ToStringVisitation_ReturnsSql()
{
var sqlExpression = new SqlExpression<Product>(new SqlServerSqlBuilder());
var sql = sqlExpression.Where(p => p.CategoryId.ToString() == "1").ToSql();
Assert.Equal(" where CAST([Products].[CategoryId] AS CHAR) = @p1", sql);
Assert.Equal(sql, sqlExpression.ToString());
}
[Fact]
public void Where_TranslatesArithmetic()
{
var sqlExpression = new SqlExpression<Product>(new SqlServerSqlBuilder());
var sql = sqlExpression.Where(p => p.CategoryId * 2 == 4).ToSql();
Assert.Equal(" where [Products].[CategoryId] * @p1 = @p2", sql);
}
[Fact]
public void ToString_ThrowsWhenCalledWithArgument()
{
var sqlExpression = new SqlExpression<Product>(new SqlServerSqlBuilder());
var ex = Assert.Throws<ArgumentException>(() => sqlExpression.Where(p => p.CategoryId.ToString("n2") == "1"));
Assert.Contains("ToString-expression should not contain any argument.", ex.Message);
}
}