Skip to content

Commit 74433f8

Browse files
committed
Tests - Execute Transaction (Oracle)
1 parent 10c0bec commit 74433f8

File tree

1 file changed

+135
-1
lines changed

1 file changed

+135
-1
lines changed

QueryDB.Core.Tests/OracleTests.cs

Lines changed: 135 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Microsoft.VisualStudio.TestTools.UnitTesting;
22
using QueryDB.Exceptions;
33
using System;
4+
using System.Collections.Generic;
45
using System.Linq;
56

67
namespace QueryDB.Core.Tests
@@ -348,7 +349,7 @@ public void Test_Oracle_ExecuteCommand_DML_Queries()
348349
var insertSql = Queries.OracleQueries.TestDB.DML.InsertSql;
349350
var updateSql = Queries.OracleQueries.TestDB.DML.UpdateSql;
350351
var deleteSql = Queries.OracleQueries.TestDB.DML.DeleteSql;
351-
var verifyDMLExecution = Queries.MSSQLQueries.TestDB.DML.VerifyDMLExecution;
352+
var verifyDMLExecution = Queries.OracleQueries.TestDB.DML.VerifyDMLExecution;
352353

353354
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
354355

@@ -463,6 +464,139 @@ public void Test_Oracle_ExecuteCommand_DCL_Queries()
463464

464465
#endregion
465466

467+
#region Execute Transaction Tests - << bool ExecuteTransaction(List<string> sqlStatements) >>
468+
469+
[TestMethod]
470+
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
471+
public void Test_Oracle_ExecuteTransaction_DDL_Multiple_Queries()
472+
{
473+
var createTableSql = Queries.OracleQueries.TestDB.DDL.Create_Table;
474+
var alterTableSql = Queries.OracleQueries.TestDB.DDL.Alter_Table;
475+
var truncateTableSql = Queries.OracleQueries.TestDB.DDL.Truncate_Table;
476+
var renameTableSql = Queries.OracleQueries.TestDB.DDL.Rename_Table;
477+
var dropTableSql = Queries.OracleQueries.TestDB.DDL.Drop_Table;
478+
var dDLExecutionCheckSql = Queries.OracleQueries.TestDB.DDL.DDL_Execute_check;
479+
480+
// Create, Alter & Truncate
481+
var statements = new List<string>
482+
{
483+
createTableSql,
484+
alterTableSql,
485+
truncateTableSql
486+
};
487+
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
488+
var result = dbContext.ExecuteTransaction(statements);
489+
Assert.AreEqual(true, result);
490+
491+
var tableCount = dbContext
492+
.FetchData(string.Format(dDLExecutionCheckSql, "Employee"));
493+
Assert.AreEqual("1", tableCount[0].ReferenceData["TABLE_COUNT"]);
494+
495+
// Rename & Drop
496+
statements = new List<string>
497+
{
498+
renameTableSql,
499+
dropTableSql
500+
};
501+
result = dbContext.ExecuteTransaction(statements);
502+
Assert.AreEqual(true, result);
503+
504+
tableCount = dbContext
505+
.FetchData(string.Format(dDLExecutionCheckSql, "Employees"));
506+
Assert.AreEqual("0", tableCount[0].ReferenceData["TABLE_COUNT"]);
507+
}
508+
509+
[TestMethod]
510+
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
511+
public void Test_Oracle_ExecuteTransaction_DML_Multiple_Queries()
512+
{
513+
var insertSql = Queries.OracleQueries.TestDB.DML.InsertSql;
514+
var updateSql = Queries.OracleQueries.TestDB.DML.UpdateSql;
515+
var deleteSql = Queries.OracleQueries.TestDB.DML.DeleteSql;
516+
var verifyDMLExecution = Queries.OracleQueries.TestDB.DML.VerifyDMLExecution;
517+
518+
var statements = new List<string>
519+
{
520+
insertSql,
521+
updateSql
522+
};
523+
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
524+
525+
// Insert & Update
526+
var result = dbContext.ExecuteTransaction(statements);
527+
Assert.AreEqual(true, result);
528+
var data = dbContext.FetchData(verifyDMLExecution);
529+
Assert.IsTrue(data.Count == 1);
530+
var agent = data.FirstOrDefault();
531+
Assert.AreEqual("A020", agent.ReferenceData["AGENT_CODE"]);
532+
Assert.AreEqual("John", agent.ReferenceData["AGENT_NAME"]);
533+
Assert.AreEqual("Wick", agent.ReferenceData["WORKING_AREA"]);
534+
Assert.AreEqual("0.15", agent.ReferenceData["COMMISSION"]);
535+
Assert.AreEqual("010-44536178", agent.ReferenceData["PHONE_NO"]);
536+
Assert.AreEqual("", agent.ReferenceData["COUNTRY"]);
537+
538+
// Delete
539+
statements = new List<string>
540+
{
541+
deleteSql
542+
};
543+
result = dbContext.ExecuteTransaction(statements);
544+
Assert.AreEqual(true, result);
545+
data = dbContext.FetchData(verifyDMLExecution);
546+
Assert.IsTrue(data.Count == 0);
547+
}
548+
549+
[TestMethod]
550+
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
551+
public void Test_Oracle_ExecuteTransaction_Incomplete_Transaction_Rollback_On_Error()
552+
{
553+
var insertSql = Queries.OracleQueries.TestDB.DML.InsertSql;
554+
var updateSql = Queries.OracleQueries.TestDB.DML.UpdateSql;
555+
var updateErrorSql = "UPDATE";
556+
var verifyDMLExecution = Queries.OracleQueries.TestDB.DML.VerifyDMLExecution;
557+
558+
var statements = new List<string>
559+
{
560+
insertSql,
561+
updateSql,
562+
updateErrorSql
563+
};
564+
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
565+
566+
// Insert & Update
567+
var result = dbContext.ExecuteTransaction(statements);
568+
Assert.AreEqual(false, result);
569+
var data = dbContext.FetchData(verifyDMLExecution);
570+
Assert.IsTrue(data.Count == 0);
571+
}
572+
573+
[TestMethod]
574+
[TestCategory(DB_TESTS), TestCategory(ORACLE_TESTS)]
575+
public void Test_Oracle_ExecuteTransaction_DML_Unsupported_SELECT_Queries()
576+
{
577+
var selectSql = Queries.OracleQueries.TestDB.DML.SelectSql;
578+
579+
// Select
580+
try
581+
{
582+
var statements = new List<string>
583+
{
584+
selectSql
585+
};
586+
var dbContext = new DBContext(DB.Oracle, OracleConnectionString);
587+
var result = dbContext.ExecuteTransaction(statements);
588+
Assert.Fail("No Exception");
589+
}
590+
catch (QueryDBException ex)
591+
{
592+
Assert.AreEqual("SELECT queries are not supported here.", ex.Message);
593+
Assert.AreEqual("UnsupportedCommand", ex.ErrorType);
594+
Assert.AreEqual("'ExecuteTransaction' doesn't support SELECT queries.", ex.AdditionalInfo);
595+
}
596+
}
597+
598+
#endregion
599+
466600
#endregion
467601

468602
}

0 commit comments

Comments
 (0)