From 33167e0c5cce62f5cbb014e32de2a2eb4c479106 Mon Sep 17 00:00:00 2001 From: kccarter76 Date: Fri, 14 Jun 2019 11:00:13 -0600 Subject: [PATCH 1/4] created the MockDbTransaction Object --- src/MockDbProvider/MockDbTransaction.cs | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/MockDbProvider/MockDbTransaction.cs diff --git a/src/MockDbProvider/MockDbTransaction.cs b/src/MockDbProvider/MockDbTransaction.cs new file mode 100644 index 0000000..7963f8c --- /dev/null +++ b/src/MockDbProvider/MockDbTransaction.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Linq; +using System.Text; + +namespace MockDbProvider +{ + public class MockDbTransaction + : DbTransaction + { + private readonly IsolationLevel _isolationLevel; + + public override IsolationLevel IsolationLevel { get { return _isolationLevel; } } + + private readonly DbConnection _dbConnection; + + protected override DbConnection DbConnection { get { return _dbConnection; } } + + public override void Commit() + { // in a mock setting I am not sure how this functionality is mockable + + } + + public override void Rollback() + { // in a mock setting I am not sure how this functionality is mockable + + } + + internal MockDbTransaction(IsolationLevel isolationLevel, DbConnection connection) + { + _isolationLevel = isolationLevel; + _dbConnection = connection; + } + } +} From 8fa2fffe71a29616f72cb356bbfea31fd28cdc95 Mon Sep 17 00:00:00 2001 From: kccarter76 Date: Fri, 14 Jun 2019 11:01:39 -0600 Subject: [PATCH 2/4] implemented BeginDbTransaction --- src/MockDbProvider/MockDbConnection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MockDbProvider/MockDbConnection.cs b/src/MockDbProvider/MockDbConnection.cs index c7f8029..f0de38a 100644 --- a/src/MockDbProvider/MockDbConnection.cs +++ b/src/MockDbProvider/MockDbConnection.cs @@ -17,7 +17,7 @@ internal MockDbConnection(IMockCommandExecution exec) } protected override DbTransaction BeginDbTransaction(System.Data.IsolationLevel isolationLevel) { - throw new NotImplementedException(); + return new MockDbTransaction(isolationLevel, this); } public override void ChangeDatabase(string databaseName) From e101491eceeb24d11f49e38efb4c3b66e5315d16 Mon Sep 17 00:00:00 2001 From: kccarter76 Date: Fri, 14 Jun 2019 11:02:59 -0600 Subject: [PATCH 3/4] Added Acceptance Test to Verify Change --- src/MockDbProvider.Tests/AcceptanceTests.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/MockDbProvider.Tests/AcceptanceTests.cs b/src/MockDbProvider.Tests/AcceptanceTests.cs index 6562ba3..b471e06 100644 --- a/src/MockDbProvider.Tests/AcceptanceTests.cs +++ b/src/MockDbProvider.Tests/AcceptanceTests.cs @@ -101,5 +101,19 @@ public void CanGetScalar() var result = SUT.DataAccess.GetUserId("abc", "test"); Assert.AreEqual(15559, result); } + + [TestMethod] + public void CanCreateTransaction() + { + var factory = DbProviderFactories.GetFactory("MockDbProvider") as MockDbProviderFactory; + + using (var conn = factory.CreateConnection()) + { + using (var trn = conn.BeginTransaction()) + { + Assert.IsNotNull(trn); + } + } + } } } From bcae0ce9e41f0550fa5b1527a6eda5cc5b1dc43c Mon Sep 17 00:00:00 2001 From: kccarter76 Date: Fri, 14 Jun 2019 11:05:14 -0600 Subject: [PATCH 4/4] added the compile directive for MockDbTransaction --- src/MockDbProvider/MockDbProvider.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/MockDbProvider/MockDbProvider.csproj b/src/MockDbProvider/MockDbProvider.csproj index b99b326..1a8d9b4 100644 --- a/src/MockDbProvider/MockDbProvider.csproj +++ b/src/MockDbProvider/MockDbProvider.csproj @@ -49,6 +49,7 @@ + Component @@ -79,4 +80,4 @@ --> - \ No newline at end of file +