Skip to content

Commit d0e164e

Browse files
committed
Execute Trnasaction - Returns transaction outcome and exception details in case of failure instead of logging into console
1 parent b8a285b commit d0e164e

File tree

12 files changed

+152
-130
lines changed

12 files changed

+152
-130
lines changed

QueryDB.Core.Tests/MSSQLTests.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,7 +1461,7 @@ public void Test_MSSQL_ExecuteTransaction_DDL_Multiple_Queries()
14611461
};
14621462
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
14631463
var result = dbContext.ExecuteTransaction(statements);
1464-
Assert.IsTrue(result);
1464+
Assert.IsTrue(result.Success);
14651465

14661466
var tableCount = dbContext
14671467
.FetchData(string.Format(dDLExecutionCheckSql, "dbo", "Employee"));
@@ -1474,7 +1474,7 @@ public void Test_MSSQL_ExecuteTransaction_DDL_Multiple_Queries()
14741474
dropTableSql
14751475
};
14761476
result = dbContext.ExecuteTransaction(statements);
1477-
Assert.IsTrue(result);
1477+
Assert.IsTrue(result.Success);
14781478

14791479
tableCount = dbContext
14801480
.FetchData(string.Format(dDLExecutionCheckSql, "dbo", "Employees"));
@@ -1499,7 +1499,7 @@ public void Test_MSSQL_ExecuteTransaction_DML_Multiple_Queries()
14991499

15001500
// Insert & Update
15011501
var result = dbContext.ExecuteTransaction(statements);
1502-
Assert.IsTrue(result);
1502+
Assert.IsTrue(result.Success);
15031503
var data = dbContext.FetchData(verifyDMLExecution);
15041504
Assert.AreEqual(1, data.Count);
15051505
var agent = data.FirstOrDefault();
@@ -1516,7 +1516,7 @@ public void Test_MSSQL_ExecuteTransaction_DML_Multiple_Queries()
15161516
deleteSql
15171517
};
15181518
result = dbContext.ExecuteTransaction(statements);
1519-
Assert.IsTrue(result);
1519+
Assert.IsTrue(result.Success);
15201520
data = dbContext.FetchData(verifyDMLExecution);
15211521
Assert.AreEqual(0, data.Count);
15221522
}
@@ -1540,7 +1540,8 @@ public void Test_MSSQL_ExecuteTransaction_Incomplete_Transaction_Rollback_On_Err
15401540

15411541
// Insert & Update
15421542
var result = dbContext.ExecuteTransaction(statements);
1543-
Assert.IsFalse(result);
1543+
Assert.IsFalse(result.Success);
1544+
Assert.AreEqual("Incorrect syntax near 'UPDATE'.", result.Exception.Message);
15441545
var data = dbContext.FetchData(verifyDMLExecution);
15451546
Assert.AreEqual(0, data.Count);
15461547
}
@@ -1594,7 +1595,7 @@ public async Task Test_MSSQL_ExecuteTransactionAsync_DDL_Multiple_Queries()
15941595
};
15951596
var dbContext = new DBContext(DB.MSSQL, MSSQLConnectionString);
15961597
var result = await dbContext.ExecuteTransactionAsync(statements);
1597-
Assert.IsTrue(result);
1598+
Assert.IsTrue(result.Success);
15981599

15991600
var tableCount = await dbContext
16001601
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "dbo", "Employee"));
@@ -1607,7 +1608,7 @@ public async Task Test_MSSQL_ExecuteTransactionAsync_DDL_Multiple_Queries()
16071608
dropTableSql
16081609
};
16091610
result = await dbContext.ExecuteTransactionAsync(statements);
1610-
Assert.IsTrue(result);
1611+
Assert.IsTrue(result.Success);
16111612

16121613
tableCount = await dbContext
16131614
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "dbo", "Employees"));
@@ -1632,7 +1633,7 @@ public async Task Test_MSSQL_ExecuteTransactionAsync_DML_Multiple_Queries()
16321633

16331634
// Insert & Update
16341635
var result = await dbContext.ExecuteTransactionAsync(statements);
1635-
Assert.IsTrue(result);
1636+
Assert.IsTrue(result.Success);
16361637
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
16371638
Assert.AreEqual(1, data.Count);
16381639
var agent = data.FirstOrDefault();
@@ -1649,7 +1650,7 @@ public async Task Test_MSSQL_ExecuteTransactionAsync_DML_Multiple_Queries()
16491650
deleteSql
16501651
};
16511652
result = await dbContext.ExecuteTransactionAsync(statements);
1652-
Assert.IsTrue(result);
1653+
Assert.IsTrue(result.Success);
16531654
data = await dbContext.FetchDataAsync(verifyDMLExecution);
16541655
Assert.AreEqual(0, data.Count);
16551656
}
@@ -1673,7 +1674,8 @@ public async Task Test_MSSQL_ExecuteTransactionAsync_Incomplete_Transaction_Roll
16731674

16741675
// Insert & Update
16751676
var result = await dbContext.ExecuteTransactionAsync(statements);
1676-
Assert.IsFalse(result);
1677+
Assert.IsFalse(result.Success);
1678+
Assert.AreEqual("Incorrect syntax near 'UPDATE'.", result.Exception.Message);
16771679
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
16781680
Assert.AreEqual(0, data.Count);
16791681
}

QueryDB.Core.Tests/MySQLTests.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1402,7 +1402,7 @@ public void Test_MySQL_ExecuteTransaction_DDL_Multiple_Queries()
14021402
};
14031403
var dbContext = new DBContext(DB.MySQL, MySQLConnectionString);
14041404
var result = dbContext.ExecuteTransaction(statements);
1405-
Assert.IsTrue(result);
1405+
Assert.IsTrue(result.Success);
14061406

14071407
var tableCount = dbContext
14081408
.FetchData(string.Format(dDLExecutionCheckSql, "mysql", "Employee"));
@@ -1415,7 +1415,7 @@ public void Test_MySQL_ExecuteTransaction_DDL_Multiple_Queries()
14151415
dropTableSql
14161416
};
14171417
result = dbContext.ExecuteTransaction(statements);
1418-
Assert.IsTrue(result);
1418+
Assert.IsTrue(result.Success);
14191419

14201420
tableCount = dbContext
14211421
.FetchData(string.Format(dDLExecutionCheckSql, "mysql", "Employees"));
@@ -1440,7 +1440,7 @@ public void Test_MySQL_ExecuteTransaction_DML_Multiple_Queries()
14401440

14411441
// Insert & Update
14421442
var result = dbContext.ExecuteTransaction(statements);
1443-
Assert.IsTrue(result);
1443+
Assert.IsTrue(result.Success);
14441444
var data = dbContext.FetchData(verifyDMLExecution);
14451445
Assert.AreEqual(1, data.Count);
14461446
var agent = data.FirstOrDefault();
@@ -1457,7 +1457,7 @@ public void Test_MySQL_ExecuteTransaction_DML_Multiple_Queries()
14571457
deleteSql
14581458
};
14591459
result = dbContext.ExecuteTransaction(statements);
1460-
Assert.IsTrue(result);
1460+
Assert.IsTrue(result.Success);
14611461
data = dbContext.FetchData(verifyDMLExecution);
14621462
Assert.AreEqual(0, data.Count);
14631463
}
@@ -1481,7 +1481,8 @@ public void Test_MySQL_ExecuteTransaction_Incomplete_Transaction_Rollback_On_Err
14811481

14821482
// Insert & Update
14831483
var result = dbContext.ExecuteTransaction(statements);
1484-
Assert.IsFalse(result);
1484+
Assert.IsFalse(result.Success);
1485+
Assert.AreEqual("You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1", result.Exception.Message);
14851486
var data = dbContext.FetchData(verifyDMLExecution);
14861487
Assert.AreEqual(0, data.Count);
14871488
}
@@ -1535,7 +1536,7 @@ public async Task Test_MySQL_ExecuteTransactionAsync_DDL_Multiple_Queries()
15351536
};
15361537
var dbContext = new DBContext(DB.MySQL, MySQLConnectionString);
15371538
var result = await dbContext.ExecuteTransactionAsync(statements);
1538-
Assert.IsTrue(result);
1539+
Assert.IsTrue(result.Success);
15391540

15401541
var tableCount = await dbContext
15411542
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "mysql", "Employee"));
@@ -1548,7 +1549,7 @@ public async Task Test_MySQL_ExecuteTransactionAsync_DDL_Multiple_Queries()
15481549
dropTableSql
15491550
};
15501551
result = await dbContext.ExecuteTransactionAsync(statements);
1551-
Assert.IsTrue(result);
1552+
Assert.IsTrue(result.Success);
15521553

15531554
tableCount = await dbContext
15541555
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "mysql", "Employees"));
@@ -1573,7 +1574,7 @@ public async Task Test_MySQL_ExecuteTransactionAsync_DML_Multiple_Queries()
15731574

15741575
// Insert & Update
15751576
var result = await dbContext.ExecuteTransactionAsync(statements);
1576-
Assert.IsTrue(result);
1577+
Assert.IsTrue(result.Success);
15771578
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
15781579
Assert.AreEqual(1, data.Count);
15791580
var agent = data.FirstOrDefault();
@@ -1590,7 +1591,7 @@ public async Task Test_MySQL_ExecuteTransactionAsync_DML_Multiple_Queries()
15901591
deleteSql
15911592
};
15921593
result = await dbContext.ExecuteTransactionAsync(statements);
1593-
Assert.IsTrue(result);
1594+
Assert.IsTrue(result.Success);
15941595
data = await dbContext.FetchDataAsync(verifyDMLExecution);
15951596
Assert.AreEqual(0, data.Count);
15961597
}
@@ -1614,7 +1615,8 @@ public async Task Test_MySQL_ExecuteTransactionAsync_Incomplete_Transaction_Roll
16141615

16151616
// Insert & Update
16161617
var result = await dbContext.ExecuteTransactionAsync(statements);
1617-
Assert.IsFalse(result);
1618+
Assert.IsFalse(result.Success);
1619+
Assert.AreEqual("You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1", result.Exception.Message);
16181620
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
16191621
Assert.AreEqual(0, data.Count);
16201622
}

QueryDB.Core.Tests/OracleTests.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1424,7 +1424,7 @@ public void Test_Oracle_ExecuteTransaction_DDL_Multiple_Queries()
14241424
};
14251425
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
14261426
var result = dbContext.ExecuteTransaction(statements);
1427-
Assert.IsTrue(result);
1427+
Assert.IsTrue(result.Success);
14281428

14291429
var tableCount = dbContext
14301430
.FetchData(string.Format(dDLExecutionCheckSql, "Employee"));
@@ -1437,7 +1437,7 @@ public void Test_Oracle_ExecuteTransaction_DDL_Multiple_Queries()
14371437
dropTableSql
14381438
};
14391439
result = dbContext.ExecuteTransaction(statements);
1440-
Assert.IsTrue(result);
1440+
Assert.IsTrue(result.Success);
14411441

14421442
tableCount = dbContext
14431443
.FetchData(string.Format(dDLExecutionCheckSql, "Employees"));
@@ -1462,7 +1462,7 @@ public void Test_Oracle_ExecuteTransaction_DML_Multiple_Queries()
14621462

14631463
// Insert & Update
14641464
var result = dbContext.ExecuteTransaction(statements);
1465-
Assert.IsTrue(result);
1465+
Assert.IsTrue(result.Success);
14661466
var data = dbContext.FetchData(verifyDMLExecution);
14671467
Assert.AreEqual(1, data.Count);
14681468
var agent = data.FirstOrDefault();
@@ -1479,7 +1479,7 @@ public void Test_Oracle_ExecuteTransaction_DML_Multiple_Queries()
14791479
deleteSql
14801480
};
14811481
result = dbContext.ExecuteTransaction(statements);
1482-
Assert.IsTrue(result);
1482+
Assert.IsTrue(result.Success);
14831483
data = dbContext.FetchData(verifyDMLExecution);
14841484
Assert.AreEqual(0, data.Count);
14851485
}
@@ -1503,7 +1503,8 @@ public void Test_Oracle_ExecuteTransaction_Incomplete_Transaction_Rollback_On_Er
15031503

15041504
// Insert & Update
15051505
var result = dbContext.ExecuteTransaction(statements);
1506-
Assert.IsFalse(result);
1506+
Assert.IsFalse(result.Success);
1507+
Assert.AreEqual("ORA-00903: invalid table name", result.Exception.Message);
15071508
var data = dbContext.FetchData(verifyDMLExecution);
15081509
Assert.AreEqual(0, data.Count);
15091510
}
@@ -1557,7 +1558,7 @@ public async Task Test_Oracle_ExecuteTransactionAsync_DDL_Multiple_Queries()
15571558
};
15581559
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
15591560
var result = await dbContext.ExecuteTransactionAsync(statements);
1560-
Assert.IsTrue(result);
1561+
Assert.IsTrue(result.Success);
15611562

15621563
var tableCount = await dbContext
15631564
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "Employee"));
@@ -1570,7 +1571,7 @@ public async Task Test_Oracle_ExecuteTransactionAsync_DDL_Multiple_Queries()
15701571
dropTableSql
15711572
};
15721573
result = await dbContext.ExecuteTransactionAsync(statements);
1573-
Assert.IsTrue(result);
1574+
Assert.IsTrue(result.Success);
15741575

15751576
tableCount = await dbContext
15761577
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "Employees"));
@@ -1595,7 +1596,7 @@ public async Task Test_Oracle_ExecuteTransactionAsync_DML_Multiple_Queries()
15951596

15961597
// Insert & Update
15971598
var result = await dbContext.ExecuteTransactionAsync(statements);
1598-
Assert.IsTrue(result);
1599+
Assert.IsTrue(result.Success);
15991600
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
16001601
Assert.AreEqual(1, data.Count);
16011602
var agent = data.FirstOrDefault();
@@ -1612,7 +1613,7 @@ public async Task Test_Oracle_ExecuteTransactionAsync_DML_Multiple_Queries()
16121613
deleteSql
16131614
};
16141615
result = await dbContext.ExecuteTransactionAsync(statements);
1615-
Assert.IsTrue(result);
1616+
Assert.IsTrue(result.Success);
16161617
data = await dbContext.FetchDataAsync(verifyDMLExecution);
16171618
Assert.AreEqual(0, data.Count);
16181619
}
@@ -1636,7 +1637,8 @@ public async Task Test_Oracle_ExecuteTransactionAsync_Incomplete_Transaction_Rol
16361637

16371638
// Insert & Update
16381639
var result = await dbContext.ExecuteTransactionAsync(statements);
1639-
Assert.IsFalse(result);
1640+
Assert.IsFalse(result.Success);
1641+
Assert.AreEqual("ORA-00903: invalid table name", result.Exception.Message);
16401642
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
16411643
Assert.AreEqual(0, data.Count);
16421644
}

QueryDB.Core.Tests/PostgreSQLTests.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,7 +1390,7 @@ public void Test_PostgreSQL_ExecuteTransaction_DDL_Multiple_Queries()
13901390
};
13911391
var dbContext = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString);
13921392
var result = dbContext.ExecuteTransaction(statements);
1393-
Assert.IsTrue(result);
1393+
Assert.IsTrue(result.Success);
13941394

13951395
var tableCount = dbContext
13961396
.FetchData(string.Format(dDLExecutionCheckSql, "public", "Employee"));
@@ -1403,7 +1403,7 @@ public void Test_PostgreSQL_ExecuteTransaction_DDL_Multiple_Queries()
14031403
dropTableSql
14041404
};
14051405
result = dbContext.ExecuteTransaction(statements);
1406-
Assert.IsTrue(result);
1406+
Assert.IsTrue(result.Success);
14071407

14081408
tableCount = dbContext
14091409
.FetchData(string.Format(dDLExecutionCheckSql, "public", "Employees"));
@@ -1428,7 +1428,7 @@ public void Test_PostgreSQL_ExecuteTransaction_DML_Multiple_Queries()
14281428

14291429
// Insert & Update
14301430
var result = dbContext.ExecuteTransaction(statements);
1431-
Assert.IsTrue(result);
1431+
Assert.IsTrue(result.Success);
14321432
var data = dbContext.FetchData(verifyDMLExecution);
14331433
Assert.AreEqual(1, data.Count);
14341434
var agent = data.FirstOrDefault();
@@ -1445,7 +1445,7 @@ public void Test_PostgreSQL_ExecuteTransaction_DML_Multiple_Queries()
14451445
deleteSql
14461446
};
14471447
result = dbContext.ExecuteTransaction(statements);
1448-
Assert.IsTrue(result);
1448+
Assert.IsTrue(result.Success);
14491449
data = dbContext.FetchData(verifyDMLExecution);
14501450
Assert.AreEqual(0, data.Count);
14511451
}
@@ -1469,7 +1469,8 @@ public void Test_PostgreSQL_ExecuteTransaction_Incomplete_Transaction_Rollback_O
14691469

14701470
// Insert & Update
14711471
var result = dbContext.ExecuteTransaction(statements);
1472-
Assert.IsFalse(result);
1472+
Assert.IsFalse(result.Success);
1473+
Assert.AreEqual("42601: syntax error at end of input\r\n\r\nPOSITION: 7", result.Exception.Message);
14731474
var data = dbContext.FetchData(verifyDMLExecution);
14741475
Assert.AreEqual(0, data.Count);
14751476
}
@@ -1523,7 +1524,7 @@ public async Task Test_PostgreSQL_ExecuteTransactionAsync_DDL_Multiple_Queries()
15231524
};
15241525
var dbContext = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString);
15251526
var result = await dbContext.ExecuteTransactionAsync(statements);
1526-
Assert.IsTrue(result);
1527+
Assert.IsTrue(result.Success);
15271528

15281529
var tableCount = await dbContext
15291530
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "public", "Employee"));
@@ -1536,7 +1537,7 @@ public async Task Test_PostgreSQL_ExecuteTransactionAsync_DDL_Multiple_Queries()
15361537
dropTableSql
15371538
};
15381539
result = await dbContext.ExecuteTransactionAsync(statements);
1539-
Assert.IsTrue(result);
1540+
Assert.IsTrue(result.Success);
15401541

15411542
tableCount = await dbContext
15421543
.FetchDataAsync(string.Format(dDLExecutionCheckSql, "public", "Employees"));
@@ -1561,7 +1562,7 @@ public async Task Test_PostgreSQL_ExecuteTransactionAsync_DML_Multiple_Queries()
15611562

15621563
// Insert & Update
15631564
var result = await dbContext.ExecuteTransactionAsync(statements);
1564-
Assert.IsTrue(result);
1565+
Assert.IsTrue(result.Success);
15651566
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
15661567
Assert.AreEqual(1, data.Count);
15671568
var agent = data.FirstOrDefault();
@@ -1578,7 +1579,7 @@ public async Task Test_PostgreSQL_ExecuteTransactionAsync_DML_Multiple_Queries()
15781579
deleteSql
15791580
};
15801581
result = await dbContext.ExecuteTransactionAsync(statements);
1581-
Assert.IsTrue(result);
1582+
Assert.IsTrue(result.Success);
15821583
data = await dbContext.FetchDataAsync(verifyDMLExecution);
15831584
Assert.AreEqual(0, data.Count);
15841585
}
@@ -1602,7 +1603,8 @@ public async Task Test_PostgreSQL_ExecuteTransactionAsync_Incomplete_Transaction
16021603

16031604
// Insert & Update
16041605
var result = await dbContext.ExecuteTransactionAsync(statements);
1605-
Assert.IsFalse(result);
1606+
Assert.IsFalse(result.Success);
1607+
Assert.AreEqual("42601: syntax error at end of input\r\n\r\nPOSITION: 7", result.Exception.Message);
16061608
var data = await dbContext.FetchDataAsync(verifyDMLExecution);
16071609
Assert.AreEqual(0, data.Count);
16081610
}

QueryDB.Core.Tests/QueryDBTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public async Task ExecuteCommandAsync_UnknownDB_ReturnsNegativeOne()
3535
}
3636

3737
[TestMethod]
38-
[TestCategory(DB_TESTS), TestCategory(UNKNOW_DB_TESTS)]
38+
[TestCategory(UNKNOW_DB_TESTS)]
3939
public void ExecuteTransaction_UnknownDB_ReturnsFalse()
4040
{
4141
var sqlStatements = new List<string>
@@ -46,11 +46,11 @@ public void ExecuteTransaction_UnknownDB_ReturnsFalse()
4646
var dbContext = new DBContext((DB)999, "some_invalid_connection_string");
4747
var result = dbContext.ExecuteTransaction(sqlStatements);
4848

49-
Assert.IsFalse(result);
49+
Assert.IsFalse(result.Success);
5050
}
5151

5252
[TestMethod]
53-
[TestCategory(DB_TESTS), TestCategory(UNKNOW_DB_TESTS)]
53+
[TestCategory(UNKNOW_DB_TESTS)]
5454
public async Task ExecuteTransactionAsync_UnknownDB_ReturnsFalse()
5555
{
5656
var sqlStatements = new List<string>
@@ -61,7 +61,7 @@ public async Task ExecuteTransactionAsync_UnknownDB_ReturnsFalse()
6161
var dbContext = new DBContext((DB)999, "some_invalid_connection_string");
6262
var result = await dbContext.ExecuteTransactionAsync(sqlStatements);
6363

64-
Assert.IsFalse(result);
64+
Assert.IsFalse(result.Success);
6565
}
6666

6767
#endregion

0 commit comments

Comments
 (0)