Skip to content

Commit 0b90ac1

Browse files
committed
Add missing file
1 parent 5ecc01a commit 0b90ac1

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
module FSharp.Data.TempTableTests
2+
3+
open FSharp.Data
4+
open Xunit
5+
open System.Data.SqlClient
6+
7+
type TempTable =
8+
SqlCommandProvider<
9+
TempTableDefinitions = "
10+
CREATE TABLE #Temp (
11+
Id INT NOT NULL,
12+
Name NVARCHAR(100) NULL)",
13+
CommandText = "
14+
SELECT Id, Name FROM #Temp",
15+
ConnectionStringOrName =
16+
ConnectionStrings.AdventureWorksLiteral>
17+
18+
[<Fact>]
19+
let usingTempTable() =
20+
use conn = new SqlConnection(ConnectionStrings.AdventureWorksLiteral)
21+
conn.Open()
22+
23+
use cmd = new TempTable(conn)
24+
25+
cmd.LoadTempTables(
26+
Temp =
27+
[ TempTable.Temp(Id = 1, Name = Some "monkey")
28+
TempTable.Temp(Id = 2, Name = Some "donkey") ])
29+
30+
let actual =
31+
cmd.Execute()
32+
|> Seq.map(fun x -> x.Id, x.Name)
33+
|> Seq.toList
34+
35+
let expected = [
36+
1, Some "monkey"
37+
2, Some "donkey"
38+
]
39+
40+
Assert.Equal<_ list>(expected, actual)
41+
42+
[<Fact>]
43+
let queryWithHash() =
44+
// We shouldn't mangle the statement when it's run
45+
use cmd =
46+
new SqlCommandProvider<
47+
CommandText = "
48+
SELECT Id, Name
49+
FROM
50+
(
51+
SELECT 1 AS Id, '#name' AS Name UNION
52+
SELECT 2, 'some other value'
53+
) AS a
54+
WHERE Name = '#name'",
55+
ConnectionStringOrName =
56+
ConnectionStrings.AdventureWorksLiteral>(ConnectionStrings.AdventureWorksLiteral)
57+
58+
let actual =
59+
cmd.Execute()
60+
|> Seq.map(fun x -> x.Id, x.Name)
61+
|> Seq.toList
62+
63+
let expected = [
64+
1, "#name"
65+
]
66+
67+
Assert.Equal<_ list>(expected, actual)
68+
69+
type TempTableHash =
70+
SqlCommandProvider<
71+
TempTableDefinitions = "
72+
CREATE TABLE #Temp (
73+
Id INT NOT NULL)",
74+
CommandText = "
75+
SELECT a.Id, a.Name
76+
FROM
77+
(
78+
SELECT 1 AS Id, '#Temp' AS Name UNION
79+
SELECT 2, 'some other value'
80+
) AS a
81+
INNER JOIN #Temp t ON t.Id = a.Id",
82+
ConnectionStringOrName =
83+
ConnectionStrings.AdventureWorksLiteral>
84+
85+
[<Fact>]
86+
let queryWithHashAndTempTable() =
87+
// We shouldn't mangle the statement when it's run
88+
use conn = new SqlConnection(ConnectionStrings.AdventureWorksLiteral)
89+
conn.Open()
90+
91+
use cmd = new TempTableHash(conn)
92+
93+
cmd.LoadTempTables(
94+
Temp =
95+
[ TempTableHash.Temp(Id = 1) ])
96+
97+
let actual =
98+
cmd.Execute()
99+
|> Seq.map(fun x -> x.Id, x.Name)
100+
|> Seq.toList
101+
102+
let expected = [
103+
1, "#Temp"
104+
]
105+
106+
Assert.Equal<_ list>(expected, actual)

0 commit comments

Comments
 (0)