@@ -214,7 +214,7 @@ public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_UpperCaseKeys
214
214
public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_Joins ( )
215
215
{
216
216
var selectSql = Queries . MSSQLQueries . TestDB . SelectSql_Join ;
217
- var data = await new DBContext ( DB . MSSQL , MSSQLConnectionString ) . FetchDataAsync ( selectSql ) ;
217
+ var data = await new DBContext ( DB . MSSQL , MSSQLConnectionString ) . FetchDataAsync ( selectSql ) ;
218
218
Assert . AreEqual ( 34 , data . Count ) ;
219
219
var agent = data . FirstOrDefault ( X => X . ReferenceData [ "Agent_Code" ] == "A004" && X . ReferenceData [ "Cust_Code" ] == "C00006" ) ;
220
220
Assert . AreEqual ( "A004" , agent . ReferenceData [ "Agent_Code" ] ) ;
@@ -250,7 +250,7 @@ public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_Joins_UpperCa
250
250
public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_Aliases ( )
251
251
{
252
252
var selectSql = Queries . MSSQLQueries . TestDB . SelectSql_Alias ;
253
- var data = await new DBContext ( DB . MSSQL , MSSQLConnectionString ) . FetchDataAsync ( selectSql ) ;
253
+ var data = await new DBContext ( DB . MSSQL , MSSQLConnectionString ) . FetchDataAsync ( selectSql ) ;
254
254
Assert . AreEqual ( 34 , data . Count ) ;
255
255
var agent = data . FirstOrDefault ( X => X . ReferenceData [ "Agent_Code" ] == "A004" && X . ReferenceData [ "Cust_Code" ] == "C00006" ) ;
256
256
Assert . AreEqual ( "A004" , agent . ReferenceData [ "Agent_Code" ] ) ;
@@ -716,7 +716,7 @@ public async Task Test_MSSQL_ExecuteScalarAsync_As_StringReturn_DefaultValue()
716
716
717
717
var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
718
718
719
- var result = await dbContext . ExecuteScalarAsync ( noValueReturned ) ;
719
+ var result = await dbContext . ExecuteScalarAsync ( noValueReturned ) ;
720
720
Assert . IsInstanceOfType < string > ( result ) ;
721
721
Assert . AreEqual ( "" , result ) ;
722
722
@@ -1572,6 +1572,139 @@ public void Test_MSSQL_ExecuteTransaction_DML_Unsupported_SELECT_Queries()
1572
1572
1573
1573
#endregion
1574
1574
1575
+ #region Execute Transaction Async Tests - << Task<bool> ExecuteTransactionAsync(List<string> sqlStatements) >>
1576
+
1577
+ [ TestMethod ]
1578
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1579
+ public async Task Test_MSSQL_ExecuteTransactionAsync_DDL_Multiple_Queries ( )
1580
+ {
1581
+ var createTableSql = Queries . MSSQLQueries . TestDB . DDL . Create_Table ;
1582
+ var alterTableSql = Queries . MSSQLQueries . TestDB . DDL . Alter_Table ;
1583
+ var truncateTableSql = Queries . MSSQLQueries . TestDB . DDL . Truncate_Table ;
1584
+ var renameTableSql = Queries . MSSQLQueries . TestDB . DDL . Rename_Table ;
1585
+ var dropTableSql = Queries . MSSQLQueries . TestDB . DDL . Drop_Table ;
1586
+ var dDLExecutionCheckSql = Queries . MSSQLQueries . TestDB . DDL . DDL_Execute_check ;
1587
+
1588
+ // Create, Alter & Truncate
1589
+ var statements = new List < string >
1590
+ {
1591
+ createTableSql ,
1592
+ alterTableSql ,
1593
+ truncateTableSql
1594
+ } ;
1595
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1596
+ var result = await dbContext . ExecuteTransactionAsync ( statements ) ;
1597
+ Assert . IsTrue ( result ) ;
1598
+
1599
+ var tableCount = await dbContext
1600
+ . FetchDataAsync ( string . Format ( dDLExecutionCheckSql , "dbo" , "Employee" ) ) ;
1601
+ Assert . AreEqual ( "1" , tableCount [ 0 ] . ReferenceData [ "Table_Count" ] ) ;
1602
+
1603
+ // Rename & Drop
1604
+ statements = new List < string >
1605
+ {
1606
+ renameTableSql ,
1607
+ dropTableSql
1608
+ } ;
1609
+ result = await dbContext . ExecuteTransactionAsync ( statements ) ;
1610
+ Assert . IsTrue ( result ) ;
1611
+
1612
+ tableCount = await dbContext
1613
+ . FetchDataAsync ( string . Format ( dDLExecutionCheckSql , "dbo" , "Employees" ) ) ;
1614
+ Assert . AreEqual ( "0" , tableCount [ 0 ] . ReferenceData [ "Table_Count" ] ) ;
1615
+ }
1616
+
1617
+ [ TestMethod ]
1618
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1619
+ public async Task Test_MSSQL_ExecuteTransactionAsync_DML_Multiple_Queries ( )
1620
+ {
1621
+ var insertSql = Queries . MSSQLQueries . TestDB . DML . InsertSql ;
1622
+ var updateSql = Queries . MSSQLQueries . TestDB . DML . UpdateSql ;
1623
+ var deleteSql = Queries . MSSQLQueries . TestDB . DML . DeleteSql ;
1624
+ var verifyDMLExecution = Queries . MSSQLQueries . TestDB . DML . VerifyDMLExecution ;
1625
+
1626
+ var statements = new List < string >
1627
+ {
1628
+ insertSql ,
1629
+ updateSql
1630
+ } ;
1631
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1632
+
1633
+ // Insert & Update
1634
+ var result = await dbContext . ExecuteTransactionAsync ( statements ) ;
1635
+ Assert . IsTrue ( result ) ;
1636
+ var data = await dbContext . FetchDataAsync ( verifyDMLExecution ) ;
1637
+ Assert . AreEqual ( 1 , data . Count ) ;
1638
+ var agent = data . FirstOrDefault ( ) ;
1639
+ Assert . AreEqual ( "A020" , agent . ReferenceData [ "Agent_Code" ] ) ;
1640
+ Assert . AreEqual ( "John" , agent . ReferenceData [ "Agent_Name" ] ) ;
1641
+ Assert . AreEqual ( "Wick" , agent . ReferenceData [ "Working_Area" ] ) ;
1642
+ Assert . AreEqual ( "0.15" , agent . ReferenceData [ "Commission" ] ) ;
1643
+ Assert . AreEqual ( "010-44536178" , agent . ReferenceData [ "Phone_No" ] ) ;
1644
+ Assert . AreEqual ( "" , agent . ReferenceData [ "Country" ] ) ;
1645
+
1646
+ // Delete
1647
+ statements = new List < string >
1648
+ {
1649
+ deleteSql
1650
+ } ;
1651
+ result = await dbContext . ExecuteTransactionAsync ( statements ) ;
1652
+ Assert . IsTrue ( result ) ;
1653
+ data = await dbContext . FetchDataAsync ( verifyDMLExecution ) ;
1654
+ Assert . AreEqual ( 0 , data . Count ) ;
1655
+ }
1656
+
1657
+ [ TestMethod ]
1658
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1659
+ public async Task Test_MSSQL_ExecuteTransactionAsync_Incomplete_Transaction_Rollback_On_Error ( )
1660
+ {
1661
+ var insertSql = Queries . MSSQLQueries . TestDB . DML . InsertSql ;
1662
+ var updateSql = Queries . MSSQLQueries . TestDB . DML . UpdateSql ;
1663
+ var updateErrorSql = "UPDATE" ;
1664
+ var verifyDMLExecution = Queries . MSSQLQueries . TestDB . DML . VerifyDMLExecution ;
1665
+
1666
+ var statements = new List < string >
1667
+ {
1668
+ insertSql ,
1669
+ updateSql ,
1670
+ updateErrorSql
1671
+ } ;
1672
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1673
+
1674
+ // Insert & Update
1675
+ var result = await dbContext . ExecuteTransactionAsync ( statements ) ;
1676
+ Assert . IsFalse ( result ) ;
1677
+ var data = await dbContext . FetchDataAsync ( verifyDMLExecution ) ;
1678
+ Assert . AreEqual ( 0 , data . Count ) ;
1679
+ }
1680
+
1681
+ [ TestMethod ]
1682
+ [ TestCategory ( DB_TESTS ) , TestCategory ( MSSQL_TESTS ) ]
1683
+ public async Task Test_MSSQL_ExecuteTransactionAsync_DML_Unsupported_SELECT_Queries ( )
1684
+ {
1685
+ var selectSql = Queries . MSSQLQueries . TestDB . DML . SelectSql ;
1686
+
1687
+ // Select
1688
+ try
1689
+ {
1690
+ var statements = new List < string >
1691
+ {
1692
+ selectSql
1693
+ } ;
1694
+ var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
1695
+ var result = await dbContext . ExecuteTransactionAsync ( statements ) ;
1696
+ Assert . Fail ( "No Exception" ) ;
1697
+ }
1698
+ catch ( QueryDBException ex )
1699
+ {
1700
+ Assert . AreEqual ( "SELECT queries are not supported here." , ex . Message ) ;
1701
+ Assert . AreEqual ( "UnsupportedCommand" , ex . ErrorType ) ;
1702
+ Assert . AreEqual ( "'ExecuteTransaction' doesn't support SELECT queries." , ex . AdditionalInfo ) ;
1703
+ }
1704
+ }
1705
+
1706
+ #endregion
1707
+
1575
1708
#endregion
1576
1709
1577
1710
}
0 commit comments