Skip to content

Commit d68f0c1

Browse files
committed
Tests (Fetch Data) - Select queries with joins
1 parent b9af7c8 commit d68f0c1

File tree

4 files changed

+148
-25
lines changed

4 files changed

+148
-25
lines changed

QueryDB.Core.Tests/App.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<configuration>
33
<appSettings>
44
<add key="UseDocker" value="true" />
5-
<add key="SQLServerConnection" value="Data Source=(local);Initial Catalog=master;User Id=SA;Password=__DB_PASSWORD__;Encrypt=False;" />
5+
<add key="MSSQLConnection" value="Data Source=(local);Initial Catalog=master;User Id=SA;Password=__DB_PASSWORD__;Encrypt=False;" />
66
<add key="MySQLConnection" value="server=localhost;database=mysql;uid=root;pwd=__DB_PASSWORD__;" />
77
<add key="OracleConnection" value="Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = XE))); User Id = sys;Password=__DB_PASSWORD__;DBA Privilege=SYSDBA" />
88
</appSettings>

QueryDB.Core.Tests/DatabaseTests.cs

Lines changed: 129 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ public class DatabaseTests : TestBase
1414
public void Test_MSSQL_FetchData()
1515
{
1616
var selectSql = Queries.SQLServerQueries.Smoke.SelectSql;
17-
var data = new DBContext(DB.MSSQL, SqlServerDatabaseString).FetchData(selectSql);
17+
var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql);
1818
Assert.IsTrue(data.Count > 0);
1919
Assert.AreEqual("mssql", data[0].ReferenceData["current_database"]);
2020

21-
var dbContext = new DBContext(DB.MSSQL, SqlServerDatabaseString);
21+
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
2222
data = dbContext.FetchData(selectSql);
2323
Assert.IsTrue(data.Count > 0);
2424
Assert.AreEqual("mssql", data[0].ReferenceData["current_database"]);
2525
}
2626

2727
[TestMethod]
2828
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
29-
public void Test_MSSQL_FetchData_SelectQuery_LowerCaseKeys()
29+
public void Test_MSSQL_FetchData_SelectQuery()
3030
{
3131
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql;
32-
var data = new DBContext(DB.MSSQL, SqlServerDatabaseString).FetchData(selectSql);
32+
var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql);
3333
Assert.IsTrue(data.Count == 12);
3434
var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Name"] == "Benjamin");
3535
Assert.AreEqual("A009", agent.ReferenceData["Agent_Code"]);
@@ -45,7 +45,7 @@ public void Test_MSSQL_FetchData_SelectQuery_LowerCaseKeys()
4545
public void Test_MSSQL_FetchData_SelectQuery_UpperCaseKeys()
4646
{
4747
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql;
48-
var data = new DBContext(DB.MSSQL, SqlServerDatabaseString).FetchData(selectSql, upperCaseKeys: true);
48+
var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql, upperCaseKeys: true);
4949
Assert.IsTrue(data.Count == 12);
5050
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin");
5151
Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]);
@@ -56,6 +56,44 @@ public void Test_MSSQL_FetchData_SelectQuery_UpperCaseKeys()
5656
Assert.AreEqual("", agent.ReferenceData["COUNTRY"]);
5757
}
5858

59+
[TestMethod]
60+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
61+
public void Test_MSSQL_FetchData_SelectQuery_Joins()
62+
{
63+
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql_Join;
64+
var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql);
65+
Assert.IsTrue(data.Count == 34);
66+
var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Code"] == "A004");
67+
Assert.AreEqual("A004", agent.ReferenceData["Agent_Code"]);
68+
Assert.AreEqual("Ivan", agent.ReferenceData["Agent_Name"]);
69+
Assert.AreEqual("C00006", agent.ReferenceData["Cust_Code"]);
70+
Assert.AreEqual("Shilton", agent.ReferenceData["Cust_Name"]);
71+
Assert.AreEqual("200104", agent.ReferenceData["Ord_Num"]);
72+
Assert.AreEqual("1500.00", agent.ReferenceData["Ord_Amount"]);
73+
Assert.AreEqual("500.00", agent.ReferenceData["Advance_Amount"]);
74+
Assert.AreEqual("13/03/2008 12:00:00 AM", agent.ReferenceData["Ord_Date"]);
75+
Assert.AreEqual("SOD", agent.ReferenceData["Ord_Description"]);
76+
}
77+
78+
[TestMethod]
79+
[TestCategory(DB_TESTS), TestCategory(MSSQL_TESTS)]
80+
public void Test_MSSQL_FetchData_SelectQuery_Joins_UpperCaseKeys()
81+
{
82+
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql_Join;
83+
var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql, upperCaseKeys: true);
84+
Assert.IsTrue(data.Count == 34);
85+
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004");
86+
Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]);
87+
Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]);
88+
Assert.AreEqual("C00006", agent.ReferenceData["CUST_CODE"]);
89+
Assert.AreEqual("Shilton", agent.ReferenceData["CUST_NAME"]);
90+
Assert.AreEqual("200104", agent.ReferenceData["ORD_NUM"]);
91+
Assert.AreEqual("1500.00", agent.ReferenceData["ORD_AMOUNT"]);
92+
Assert.AreEqual("500.00", agent.ReferenceData["ADVANCE_AMOUNT"]);
93+
Assert.AreEqual("13/03/2008 12:00:00 AM", agent.ReferenceData["ORD_DATE"]);
94+
Assert.AreEqual("SOD", agent.ReferenceData["ORD_DESCRIPTION"]);
95+
}
96+
5997
#endregion
6098

6199
#region MySQL DB Tests
@@ -65,22 +103,22 @@ public void Test_MSSQL_FetchData_SelectQuery_UpperCaseKeys()
65103
public void Test_MySQL_FetchData()
66104
{
67105
var selectSql = Queries.MySQLQueries.Smoke.SelectSql;
68-
var data = new DBContext(DB.MySQL, MySqlDatabaseString).FetchData(selectSql);
106+
var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql);
69107
Assert.IsTrue(data.Count > 0);
70108
Assert.AreEqual("mysql", data[0].ReferenceData["current_database"]);
71109

72-
var dbContext = new DBContext(DB.MySQL, MySqlDatabaseString);
110+
var dbContext = new DBContext(DB.MySQL, MySQLConnectionString);
73111
data = dbContext.FetchData(selectSql);
74112
Assert.IsTrue(data.Count > 0);
75113
Assert.AreEqual("mysql", data[0].ReferenceData["current_database"]);
76114
}
77115

78116
[TestMethod]
79117
[TestCategory(DB_TESTS), TestCategory(MYSQL_TESTS)]
80-
public void Test_MySQL_FetchData_SelectQuery_LowerCaseKeys()
118+
public void Test_MySQL_FetchData_SelectQuery()
81119
{
82120
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql;
83-
var data = new DBContext(DB.MySQL, MySqlDatabaseString).FetchData(selectSql);
121+
var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql);
84122
Assert.IsTrue(data.Count == 12);
85123
var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Name"] == "Benjamin");
86124
Assert.AreEqual("A009", agent.ReferenceData["Agent_Code"]);
@@ -96,7 +134,7 @@ public void Test_MySQL_FetchData_SelectQuery_LowerCaseKeys()
96134
public void Test_MySQL_FetchData_SelectQuery_UpperCaseKeys()
97135
{
98136
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql;
99-
var data = new DBContext(DB.MySQL, MySqlDatabaseString).FetchData(selectSql, upperCaseKeys: true);
137+
var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql, upperCaseKeys: true);
100138
Assert.IsTrue(data.Count == 12);
101139
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin");
102140
Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]);
@@ -107,6 +145,44 @@ public void Test_MySQL_FetchData_SelectQuery_UpperCaseKeys()
107145
Assert.AreEqual("", agent.ReferenceData["COUNTRY"]);
108146
}
109147

148+
[TestMethod]
149+
[TestCategory(DB_TESTS), TestCategory(MYSQL_TESTS)]
150+
public void Test_MySQL_FetchData_SelectQuery_Joins()
151+
{
152+
var selectSql = Queries.MySQLQueries.SalesDB.SelectSql_Join;
153+
var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql);
154+
Assert.IsTrue(data.Count == 34);
155+
var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Code"] == "A004");
156+
Assert.AreEqual("A004", agent.ReferenceData["Agent_Code"]);
157+
Assert.AreEqual("Ivan", agent.ReferenceData["Agent_Name"]);
158+
Assert.AreEqual("C00006", agent.ReferenceData["Cust_Code"]);
159+
Assert.AreEqual("Shilton", agent.ReferenceData["Cust_Name"]);
160+
Assert.AreEqual("200104", agent.ReferenceData["Ord_Num"]);
161+
Assert.AreEqual("1500.00", agent.ReferenceData["Ord_Amount"]);
162+
Assert.AreEqual("500.00", agent.ReferenceData["Advance_Amount"]);
163+
Assert.AreEqual("13/03/2008 12:00:00 AM", agent.ReferenceData["Ord_Date"]);
164+
Assert.AreEqual("SOD", agent.ReferenceData["Ord_Description"]);
165+
}
166+
167+
[TestMethod]
168+
[TestCategory(DB_TESTS), TestCategory(MYSQL_TESTS)]
169+
public void Test_MySQL_FetchData_SelectQuery_Joins_UpperCaseKeys()
170+
{
171+
var selectSql = Queries.MySQLQueries.SalesDB.SelectSql_Join;
172+
var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql);
173+
Assert.IsTrue(data.Count == 34);
174+
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004");
175+
Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]);
176+
Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]);
177+
Assert.AreEqual("C00006", agent.ReferenceData["CUST_CODE"]);
178+
Assert.AreEqual("Shilton", agent.ReferenceData["CUST_NAME"]);
179+
Assert.AreEqual("200104", agent.ReferenceData["ORD_NUM"]);
180+
Assert.AreEqual("1500.00", agent.ReferenceData["ORD_AMOUNT"]);
181+
Assert.AreEqual("500.00", agent.ReferenceData["ADVANCE_AMOUNT"]);
182+
Assert.AreEqual("13/03/2008 12:00:00 AM", agent.ReferenceData["ORD_DATE"]);
183+
Assert.AreEqual("SOD", agent.ReferenceData["ORD_DESCRIPTION"]);
184+
}
185+
110186
#endregion
111187

112188
#region Oracle DB Tests
@@ -116,22 +192,22 @@ public void Test_MySQL_FetchData_SelectQuery_UpperCaseKeys()
116192
public void Test_Oracle_FetchData()
117193
{
118194
var selectSql = Queries.OracleQueries.Smoke.SelectSql;
119-
var data = new DBContext(DB.Oracle, OracleDatabaseString).FetchData(selectSql);
195+
var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql);
120196
Assert.IsTrue(data.Count > 0);
121197
Assert.AreEqual("oracle", data[0].ReferenceData["CURRENT_DATABASE"]);
122198

123-
var dbContext = new DBContext(DB.Oracle, OracleDatabaseString);
199+
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
124200
data = dbContext.FetchData(selectSql);
125201
Assert.IsTrue(data.Count > 0);
126202
Assert.AreEqual("oracle", data[0].ReferenceData["CURRENT_DATABASE"]);
127203
}
128204

129205
[TestMethod]
130206
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
131-
public void Test_Oracle_FetchData_SelectQuery_LowerCaseKeys()
207+
public void Test_Oracle_FetchData_SelectQuery()
132208
{
133209
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql;
134-
var data = new DBContext(DB.Oracle, OracleDatabaseString).FetchData(selectSql);
210+
var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql);
135211
Assert.IsTrue(data.Count == 12);
136212
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin");
137213
Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]);
@@ -147,7 +223,7 @@ public void Test_Oracle_FetchData_SelectQuery_LowerCaseKeys()
147223
public void Test_Oracle_FetchData_SelectQuery_UpperCaseKeys()
148224
{
149225
var selectSql = Queries.SQLServerQueries.SalesDB.SelectSql;
150-
var data = new DBContext(DB.Oracle, OracleDatabaseString).FetchData(selectSql, upperCaseKeys: true);
226+
var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql, upperCaseKeys: true);
151227
Assert.IsTrue(data.Count == 12);
152228
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin");
153229
Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]);
@@ -158,6 +234,44 @@ public void Test_Oracle_FetchData_SelectQuery_UpperCaseKeys()
158234
Assert.AreEqual("", agent.ReferenceData["COUNTRY"]);
159235
}
160236

237+
[TestMethod]
238+
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
239+
public void Test_Oracle_FetchData_SelectQuery_Joins()
240+
{
241+
var selectSql = Queries.OracleQueries.SalesDB.SelectSql_Join;
242+
var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql);
243+
Assert.IsTrue(data.Count == 34);
244+
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004");
245+
Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]);
246+
Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]);
247+
Assert.AreEqual("C00006", agent.ReferenceData["CUST_CODE"]);
248+
Assert.AreEqual("Shilton", agent.ReferenceData["CUST_NAME"]);
249+
Assert.AreEqual("200104", agent.ReferenceData["ORD_NUM"]);
250+
Assert.AreEqual("1500.00", agent.ReferenceData["ORD_AMOUNT"]);
251+
Assert.AreEqual("500.00", agent.ReferenceData["ADVANCE_AMOUNT"]);
252+
Assert.AreEqual("13/03/2008 12:00:00 AM", agent.ReferenceData["ORD_DATE"]);
253+
Assert.AreEqual("SOD", agent.ReferenceData["ORD_DESCRIPTION"]);
254+
}
255+
256+
[TestMethod]
257+
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
258+
public void Test_Oracle_FetchData_SelectQuery_Joins_UpperCaseKeys()
259+
{
260+
var selectSql = Queries.OracleQueries.SalesDB.SelectSql_Join;
261+
var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql);
262+
Assert.IsTrue(data.Count == 34);
263+
var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004");
264+
Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]);
265+
Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]);
266+
Assert.AreEqual("C00006", agent.ReferenceData["CUST_CODE"]);
267+
Assert.AreEqual("Shilton", agent.ReferenceData["CUST_NAME"]);
268+
Assert.AreEqual("200104", agent.ReferenceData["ORD_NUM"]);
269+
Assert.AreEqual("1500.00", agent.ReferenceData["ORD_AMOUNT"]);
270+
Assert.AreEqual("500.00", agent.ReferenceData["ADVANCE_AMOUNT"]);
271+
Assert.AreEqual("13/03/2008 12:00:00 AM", agent.ReferenceData["ORD_DATE"]);
272+
Assert.AreEqual("SOD", agent.ReferenceData["ORD_DESCRIPTION"]);
273+
}
274+
161275
#endregion
162276

163277
}

QueryDB.Core.Tests/Queries.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,48 @@
22
{
33
internal static class Queries
44
{
5-
internal static class OracleQueries
5+
internal static class SQLServerQueries
66
{
77
internal static class Smoke
88
{
9-
public static string SelectSql = @"SELECT 'oracle' AS current_database FROM dual";
9+
public static string SelectSql = @"SELECT 'mssql' AS current_database";
1010
}
1111
internal static class SalesDB
1212
{
1313
public static string SelectSql = @"SELECT * FROM Agents";
14+
public static string SelectSql_Join = @"SELECT A.Agent_Code, A.Agent_Name, C.Cust_Code, C.Cust_Name, O.Ord_Num, O.Ord_Amount, O.Advance_Amount, O.Ord_Date, O.Ord_Description FROM Agents A INNER JOIN
15+
Customer C ON C.Agent_Code = A.Agent_Code INNER JOIN
16+
Orders O ON O.Cust_Code = C.Cust_Code AND O.Agent_Code = A.Agent_Code";
1417
}
1518
}
1619

17-
internal static class SQLServerQueries
20+
internal static class MySQLQueries
1821
{
1922
internal static class Smoke
2023
{
21-
public static string SelectSql = @"SELECT 'mssql' AS current_database";
24+
public static string SelectSql = @"SELECT DATABASE() AS current_database";
2225
}
2326
internal static class SalesDB
2427
{
2528
public static string SelectSql = @"SELECT * FROM Agents";
29+
public static string SelectSql_Join = @"SELECT A.Agent_Code, A.Agent_Name, C.Cust_Code, C.Cust_Name, O.Ord_Num, O.Ord_Amount, O.Advance_Amount, O.Ord_Date, O.Ord_Description FROM Agents A INNER JOIN
30+
Customer C ON C.Agent_Code = A.Agent_Code INNER JOIN
31+
Orders O ON O.Cust_Code = C.Cust_Code AND O.Agent_Code = A.Agent_Code";
2632
}
2733
}
2834

29-
internal static class MySQLQueries
35+
internal static class OracleQueries
3036
{
3137
internal static class Smoke
3238
{
33-
public static string SelectSql = @"SELECT DATABASE() AS current_database";
39+
public static string SelectSql = @"SELECT 'oracle' AS current_database FROM dual";
3440
}
3541
internal static class SalesDB
3642
{
3743
public static string SelectSql = @"SELECT * FROM Agents";
44+
public static string SelectSql_Join = @"SELECT A.Agent_Code, A.Agent_Name, C.Cust_Code, C.Cust_Name, O.Ord_Num, O.Ord_Amount, O.Advance_Amount, O.Ord_Date, O.Ord_Description FROM Agents A INNER JOIN
45+
Customer C ON C.Agent_Code = A.Agent_Code INNER JOIN
46+
Orders O ON O.Cust_Code = C.Cust_Code AND O.Agent_Code = A.Agent_Code";
3847
}
3948
}
4049
}

QueryDB.Core.Tests/TestBase.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ namespace QueryDB.Core.Tests
66
public class TestBase
77
{
88
private readonly string _useDocker = ConfigurationManager.AppSettings["UseDocker"];
9-
protected readonly string SqlServerDatabaseString = ConfigurationManager.AppSettings["SQLServerConnection"];
10-
protected readonly string MySqlDatabaseString = ConfigurationManager.AppSettings["MySQLConnection"];
11-
protected readonly string OracleDatabaseString = ConfigurationManager.AppSettings["OracleConnection"];
9+
protected readonly string MSSQLConnectionString = ConfigurationManager.AppSettings["MSSQLConnection"];
10+
protected readonly string MySQLConnectionString = ConfigurationManager.AppSettings["MySQLConnection"];
11+
protected readonly string OracleConnectionString = ConfigurationManager.AppSettings["OracleConnection"];
1212
protected const string DB_TESTS = "DB-TESTS";
1313
protected const string SMOKE_TESTS = "SMOKE-TESTS";
1414
protected const string ORACLE_TESTS = "ORACLE-TESTS";

0 commit comments

Comments
 (0)