Skip to content

Commit 1893697

Browse files
Merge pull request #193 from sqlkata/clean-and-refactor
Clean and refactor test library
2 parents 09f8cc8 + 1edc978 commit 1893697

40 files changed

Lines changed: 1057 additions & 925 deletions
Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Text;
1+
using SqlKata.Compilers;
2+
using SqlKata.Tests.Infrastructure;
43
using Xunit;
54

65
namespace SqlKata.Tests
76
{
8-
public partial class QueryBuilderTest
7+
public class AggregateTests : TestSupport
98
{
109
[Fact]
1110
public void Count()
@@ -14,10 +13,10 @@ public void Count()
1413

1514
var c = Compile(query);
1615

17-
Assert.Equal("SELECT COUNT(*) AS [count] FROM [A]", c[0]);
18-
Assert.Equal("SELECT COUNT(*) AS `count` FROM `A`", c[1]);
19-
Assert.Equal("SELECT COUNT(*) AS \"count\" FROM \"A\"", c[2]);
20-
Assert.Equal("SELECT COUNT(*) AS \"COUNT\" FROM \"A\"", c[3]);
16+
Assert.Equal("SELECT COUNT(*) AS [count] FROM [A]", c[EngineCodes.SqlServer]);
17+
Assert.Equal("SELECT COUNT(*) AS `count` FROM `A`", c[EngineCodes.MySql]);
18+
Assert.Equal("SELECT COUNT(*) AS \"count\" FROM \"A\"", c[EngineCodes.PostgreSql]);
19+
Assert.Equal("SELECT COUNT(*) AS \"COUNT\" FROM \"A\"", c[EngineCodes.Firebird]);
2120
}
2221

2322
[Fact]
@@ -27,7 +26,7 @@ public void CountMultipleColumns()
2726

2827
var c = Compile(query);
2928

30-
Assert.Equal("SELECT COUNT(*) AS [count] FROM (SELECT 1 FROM [A] WHERE [ColumnA] IS NOT NULL AND [ColumnB] IS NOT NULL) AS [countQuery]", c[0]);
29+
Assert.Equal("SELECT COUNT(*) AS [count] FROM (SELECT 1 FROM [A] WHERE [ColumnA] IS NOT NULL AND [ColumnB] IS NOT NULL) AS [countQuery]", c[EngineCodes.SqlServer]);
3130
}
3231

3332
[Fact]
@@ -37,7 +36,7 @@ public void DistinctCount()
3736

3837
var c = Compile(query);
3938

40-
Assert.Equal("SELECT COUNT(*) AS [count] FROM (SELECT DISTINCT * FROM [A]) AS [countQuery]", c[0]);
39+
Assert.Equal("SELECT COUNT(*) AS [count] FROM (SELECT DISTINCT * FROM [A]) AS [countQuery]", c[EngineCodes.SqlServer]);
4140
}
4241

4342
[Fact]
@@ -47,7 +46,7 @@ public void DistinctCountMultipleColumns()
4746

4847
var c = Compile(query);
4948

50-
Assert.Equal("SELECT COUNT(*) AS [count] FROM (SELECT DISTINCT [ColumnA], [ColumnB] FROM [A]) AS [countQuery]", c[0]);
49+
Assert.Equal("SELECT COUNT(*) AS [count] FROM (SELECT DISTINCT [ColumnA], [ColumnB] FROM [A]) AS [countQuery]", c[EngineCodes.SqlServer]);
5150
}
5251

5352
[Fact]
@@ -57,7 +56,7 @@ public void Average()
5756

5857
var c = Compile(query);
5958

60-
Assert.Equal("SELECT AVG([TTL]) AS [avg] FROM [A]", c[0]);
59+
Assert.Equal("SELECT AVG([TTL]) AS [avg] FROM [A]", c[EngineCodes.SqlServer]);
6160
}
6261

6362
[Fact]
@@ -67,7 +66,7 @@ public void Sum()
6766

6867
var c = Compile(query);
6968

70-
Assert.Equal("SELECT SUM([PacketsDropped]) AS [sum] FROM [A]", c[0]);
69+
Assert.Equal("SELECT SUM([PacketsDropped]) AS [sum] FROM [A]", c[EngineCodes.SqlServer]);
7170
}
7271

7372
[Fact]
@@ -77,7 +76,7 @@ public void Max()
7776

7877
var c = Compile(query);
7978

80-
Assert.Equal("SELECT MAX([LatencyMs]) AS [max] FROM [A]", c[0]);
79+
Assert.Equal("SELECT MAX([LatencyMs]) AS [max] FROM [A]", c[EngineCodes.SqlServer]);
8180
}
8281

8382
[Fact]
@@ -87,7 +86,7 @@ public void Min()
8786

8887
var c = Compile(query);
8988

90-
Assert.Equal("SELECT MIN([LatencyMs]) AS [min] FROM [A]", c[0]);
89+
Assert.Equal("SELECT MIN([LatencyMs]) AS [min] FROM [A]", c[EngineCodes.SqlServer]);
9190
}
9291
}
9392
}

QueryBuilder.Tests/CompilerTest.cs

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using SqlKata.Execution;
3+
using Xunit;
4+
5+
namespace SqlKata.Tests
6+
{
7+
public class ExecutionTests
8+
{
9+
[Fact]
10+
public void ShouldThrowException()
11+
{
12+
Assert.Throws<InvalidOperationException>(() => { new Query("Books").Get(); });
13+
}
14+
}
15+
}

QueryBuilder.Tests/FirebirdLimitTest.cs renamed to QueryBuilder.Tests/Firebird/FirebirdLimitTests.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1-
using SqlKata;
21
using SqlKata.Compilers;
2+
using SqlKata.Tests.Infrastructure;
33
using Xunit;
44

5-
namespace SqlKata.Tests
5+
namespace SqlKata.Tests.Firebird
66
{
7-
public class FirebirdLimitTest
7+
public class FirebirdLimitTests : TestSupport
88
{
9-
private FirebirdCompiler compiler = new FirebirdCompiler();
9+
private readonly FirebirdCompiler compiler;
10+
11+
public FirebirdLimitTests()
12+
{
13+
compiler = Compilers.Get<FirebirdCompiler>(EngineCodes.Firebird);
14+
}
1015

1116
[Fact]
1217
public void NoLimitNorOffset()

QueryBuilder.Tests/GeneralTests.cs

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
using SqlKata.Compilers;
2+
using SqlKata.Extensions;
3+
using SqlKata.Tests.Infrastructure;
4+
using Xunit;
5+
6+
namespace SqlKata.Tests
7+
{
8+
public class GeneralTests : TestSupport
9+
{
10+
[Fact]
11+
public void ColumnsEscaping()
12+
{
13+
var q = new Query().From("users").Select("mycol[isthis]");
14+
var c = Compile(q);
15+
16+
Assert.Equal("SELECT [mycol[isthis]]] FROM [users]", c[EngineCodes.SqlServer]);
17+
}
18+
19+
20+
[Fact]
21+
public void InnerScopeEngineWithinCTE()
22+
{
23+
var series = new Query("table")
24+
.ForPostgreSql(q => q.WhereRaw("postgres = true"))
25+
.ForSqlServer(q => q.WhereRaw("sqlsrv = 1"))
26+
.ForFirebird(q => q.WhereRaw("firebird = 1"));
27+
var query = new Query("series").With("series", series);
28+
29+
var c = Compile(query);
30+
31+
Assert.Equal("WITH [series] AS (SELECT * FROM [table] WHERE sqlsrv = 1)\nSELECT * FROM [series]", c[EngineCodes.SqlServer]);
32+
33+
Assert.Equal("WITH \"series\" AS (SELECT * FROM \"table\" WHERE postgres = true)\nSELECT * FROM \"series\"",
34+
c[EngineCodes.PostgreSql]);
35+
Assert.Equal("WITH \"SERIES\" AS (SELECT * FROM \"TABLE\" WHERE firebird = 1)\nSELECT * FROM \"SERIES\"",
36+
c[EngineCodes.Firebird]);
37+
}
38+
39+
[Fact]
40+
public void InnerScopeEngineWithinSubQuery()
41+
{
42+
var series = new Query("table")
43+
.ForPostgreSql(q => q.WhereRaw("postgres = true"))
44+
.ForSqlServer(q => q.WhereRaw("sqlsrv = 1"))
45+
.ForFirebird(q => q.WhereRaw("firebird = 1"));
46+
var query = new Query("series").From(series.As("series"));
47+
48+
var c = Compile(query);
49+
50+
Assert.Equal("SELECT * FROM (SELECT * FROM [table] WHERE sqlsrv = 1) AS [series]", c[EngineCodes.SqlServer]);
51+
52+
Assert.Equal("SELECT * FROM (SELECT * FROM \"table\" WHERE postgres = true) AS \"series\"", c[EngineCodes.PostgreSql]);
53+
Assert.Equal("SELECT * FROM (SELECT * FROM \"TABLE\" WHERE firebird = 1) AS \"SERIES\"", c[EngineCodes.Firebird]);
54+
}
55+
56+
[Fact]
57+
public void ItShouldCacheMethodInfoByType()
58+
{
59+
var compiler = new TestSqlServerCompiler();
60+
61+
var call1 = compiler.Call_FindCompilerMethodInfo(
62+
typeof(BasicCondition), "CompileBasicCondition"
63+
);
64+
65+
var call2 = compiler.Call_FindCompilerMethodInfo(
66+
typeof(BasicCondition), "CompileBasicCondition"
67+
);
68+
69+
Assert.Same(call1, call2);
70+
}
71+
72+
[Fact]
73+
public void Return_Different_MethodInfo_WhenSame_Method_With_Different_GenericTypes()
74+
{
75+
var compiler = new TestSqlServerCompiler();
76+
77+
var call1 = compiler.Call_FindCompilerMethodInfo(
78+
typeof(NestedCondition<Query>), "CompileNestedCondition"
79+
);
80+
81+
var call2 = compiler.Call_FindCompilerMethodInfo(
82+
typeof(NestedCondition<Join>), "CompileNestedCondition"
83+
);
84+
85+
Assert.NotSame(call1, call2);
86+
}
87+
88+
[Fact]
89+
public void Should_Equal_AfterMultipleCompile()
90+
{
91+
var query = new Query()
92+
.Select("Id", "Name")
93+
.From("Table")
94+
.OrderBy("Name")
95+
.Limit(20)
96+
.Offset(1);
97+
98+
var first = Compile(query);
99+
Assert.Equal(
100+
"SELECT * FROM (SELECT [Id], [Name], ROW_NUMBER() OVER (ORDER BY [Name]) AS [row_num] FROM [Table]) AS [results_wrapper] WHERE [row_num] BETWEEN 2 AND 21",
101+
first[EngineCodes.SqlServer]);
102+
Assert.Equal("SELECT `Id`, `Name` FROM `Table` ORDER BY `Name` LIMIT 20 OFFSET 1", first[EngineCodes.MySql]);
103+
Assert.Equal("SELECT \"Id\", \"Name\" FROM \"Table\" ORDER BY \"Name\" LIMIT 20 OFFSET 1", first[EngineCodes.PostgreSql]);
104+
Assert.Equal("SELECT \"ID\", \"NAME\" FROM \"TABLE\" ORDER BY \"NAME\" ROWS 2 TO 21", first[EngineCodes.Firebird]);
105+
106+
var second = Compile(query);
107+
108+
Assert.Equal(first[EngineCodes.SqlServer], second[EngineCodes.SqlServer]);
109+
Assert.Equal(first[EngineCodes.MySql], second[EngineCodes.MySql]);
110+
Assert.Equal(first[EngineCodes.PostgreSql], second[EngineCodes.PostgreSql]);
111+
Assert.Equal(first[EngineCodes.Firebird], second[EngineCodes.Firebird]);
112+
}
113+
114+
[Fact]
115+
public void Raw_WrapIdentifiers()
116+
{
117+
var query = new Query("Users").SelectRaw("[Id], [Name], {Age}");
118+
119+
var c = Compile(query);
120+
121+
Assert.Equal("SELECT [Id], [Name], [Age] FROM [Users]", c[EngineCodes.SqlServer]);
122+
Assert.Equal("SELECT `Id`, `Name`, `Age` FROM `Users`", c[EngineCodes.MySql]);
123+
Assert.Equal("SELECT \"Id\", \"Name\", \"Age\" FROM \"Users\"", c[EngineCodes.PostgreSql]);
124+
Assert.Equal("SELECT \"Id\", \"Name\", \"Age\" FROM \"USERS\"", c[EngineCodes.Firebird]);
125+
}
126+
127+
[Fact]
128+
public void WrapWithSpace()
129+
{
130+
var compiler = new SqlServerCompiler();
131+
132+
133+
Assert.Equal("[My Table] AS [Table]", compiler.Wrap("My Table as Table"));
134+
}
135+
136+
[Fact]
137+
public void WrapWithDotes()
138+
{
139+
var compiler = new SqlServerCompiler();
140+
141+
142+
Assert.Equal("[My Schema].[My Table] AS [Table]", compiler.Wrap("My Schema.My Table as Table"));
143+
}
144+
145+
[Fact]
146+
public void WrapWithMultipleSpaces()
147+
{
148+
var compiler = new SqlServerCompiler();
149+
150+
151+
Assert.Equal("[My Table One] AS [Table One]", compiler.Wrap("My Table One as Table One"));
152+
}
153+
}
154+
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
using System.Collections;
22
using System.Linq;
3-
using SqlKata;
43
using Xunit;
54

65
namespace SqlKata.Tests
76
{
8-
public class HelperTest
7+
public class HelperTests
98
{
109
[Theory]
1110
[InlineData("")]

QueryBuilder.Tests/TestCompiler.cs renamed to QueryBuilder.Tests/Infrastructure/TestCompiler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Reflection;
33
using SqlKata.Compilers;
44

5-
namespace SqlKata.Tests
5+
namespace SqlKata.Tests.Infrastructure
66
{
77
/// <summary>
88
/// A test class to expose private methods

0 commit comments

Comments
 (0)