forked from ThatRendle/Simple.Data
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHavingTest.cs
More file actions
64 lines (54 loc) · 2.84 KB
/
HavingTest.cs
File metadata and controls
64 lines (54 loc) · 2.84 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
namespace Simple.Data.IntegrationTest.Query
{
using System;
using Mocking.Ado;
using NUnit.Framework;
[TestFixture]
public class HavingTest : DatabaseIntegrationContext
{
[Test]
public void HavingClauseWithNaturalJoin()
{
var q = _db.Customers.Query()
.Having(_db.Customers.Orders.OrderDate.Max() < new DateTime(2011, 1, 1));
EatException<InvalidOperationException>(() => q.ToList());
GeneratedSqlIs("select [dbo].[customer].[customerid] from [dbo].[customer] " +
"join [dbo].[orders] on ([dbo].[customer].[customerid] = [dbo].[orders].[customerid]) " +
"group by [dbo].[customer].[customerid] " +
"having max([dbo].[orders].[orderdate]) < @p1");
}
[Test]
public void HavingClauseWithDetailTableCount()
{
var q = _db.Customers.Query()
.Having(_db.Customers.Orders.OrderId.Count() >= 100);
EatException<InvalidOperationException>(() => q.ToList());
GeneratedSqlIs("select [dbo].[customer].[customerid] from [dbo].[customer] " +
"join [dbo].[orders] on ([dbo].[customer].[customerid] = [dbo].[orders].[customerid]) " +
"group by [dbo].[customer].[customerid] " +
"having count([dbo].[orders].[orderid]) >= @p1");
}
[Test]
public void BasicHavingClause()
{
var q = _db.Orders.Query()
.Select(_db.Orders.CustomerId)
.Having(_db.Orders.OrderDate.Max() <= new DateTime(2011, 1, 1));
EatException<InvalidOperationException>(() => q.ToList());
GeneratedSqlIs("select [dbo].[orders].[customerid] from [dbo].[orders] " +
"group by [dbo].[orders].[customerid] " +
"having max([dbo].[orders].[orderdate]) <= @p1");
}
protected override void SetSchema(MockSchemaProvider schemaProvider)
{
schemaProvider.SetTables(new[] { "dbo", "Customer", "BASE TABLE" },
new[] { "dbo", "Orders", "BASE TABLE" });
schemaProvider.SetColumns(new[] { "dbo", "Customer", "CustomerId" },
new[] { "dbo", "Orders", "OrderId" },
new[] { "dbo", "Orders", "CustomerId" },
new[] { "dbo", "Orders", "OrderDate" });
schemaProvider.SetPrimaryKeys(new object[] { "dbo", "Customer", "CustomerId", 0 });
schemaProvider.SetForeignKeys(new object[] { "FK_Orders_Customer", "dbo", "Orders", "CustomerId", "dbo", "Customer", "CustomerId", 0 });
}
}
}