@@ -214,7 +214,7 @@ public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_UpperCaseKeys
214214 public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_Joins ( )
215215 {
216216 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 ) ;
218218 Assert . AreEqual ( 34 , data . Count ) ;
219219 var agent = data . FirstOrDefault ( X => X . ReferenceData [ "Agent_Code" ] == "A004" && X . ReferenceData [ "Cust_Code" ] == "C00006" ) ;
220220 Assert . AreEqual ( "A004" , agent . ReferenceData [ "Agent_Code" ] ) ;
@@ -250,7 +250,7 @@ public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_Joins_UpperCa
250250 public async Task Test_MSSQL_FetchDataAsync_Dictionary_SelectQuery_Aliases ( )
251251 {
252252 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 ) ;
254254 Assert . AreEqual ( 34 , data . Count ) ;
255255 var agent = data . FirstOrDefault ( X => X . ReferenceData [ "Agent_Code" ] == "A004" && X . ReferenceData [ "Cust_Code" ] == "C00006" ) ;
256256 Assert . AreEqual ( "A004" , agent . ReferenceData [ "Agent_Code" ] ) ;
@@ -716,7 +716,7 @@ public async Task Test_MSSQL_ExecuteScalarAsync_As_StringReturn_DefaultValue()
716716
717717 var dbContext = new DBContext ( DB . MSSQL , MSSQLConnectionString ) ;
718718
719- var result = await dbContext . ExecuteScalarAsync ( noValueReturned ) ;
719+ var result = await dbContext . ExecuteScalarAsync ( noValueReturned ) ;
720720 Assert . IsInstanceOfType < string > ( result ) ;
721721 Assert . AreEqual ( "" , result ) ;
722722
@@ -1572,6 +1572,139 @@ public void Test_MSSQL_ExecuteTransaction_DML_Unsupported_SELECT_Queries()
15721572
15731573 #endregion
15741574
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+
15751708 #endregion
15761709
15771710 }
0 commit comments