public void StoredProcedure_WithSqlTransactionCommitted_DoesWriteRecords() { // ARRANGE const int expectedIntermediateCount = 3; int originalCount; int intermediateCount; int finalCount; var itemsToAdd = new List<TransactionTestParameterTableType> { new TransactionTestParameterTableType { Name = "Company 1", IsActive = true, Id = 1 }, new TransactionTestParameterTableType { Name = "Company 2", IsActive = false, Id = 2 }, new TransactionTestParameterTableType { Name = "Company 3", IsActive = true, Id = 3 } }; var transactionAddParameters = new TransactionTestAddStoredProcedure.Parameter { TvpParameters = itemsToAdd }; var transactionTestAddProcedure = new TransactionTestAddStoredProcedure(transactionAddParameters); var transactionTestCountProcedure = new TransactionTestCountAllStoredProcedure(); var transactionDeleteProcedure = new TransactionTestDeleteAllStoredProcedure(); // ACT using (var connection = new SqlConnection(_connectionName)) { connection.Open(); using (var transaction = connection.BeginTransaction()) { using (var context = new IntegrationTestDbContext(connection, false)) { originalCount = context.ExecuteStoredProcedure(transactionTestCountProcedure, transaction: transaction).First().Count; context.ExecuteStoredProcedure(transactionTestAddProcedure, transaction: transaction); transaction.Commit(); } } } using (var context = new IntegrationTestDbContext(_connectionName)) { intermediateCount = context.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; context.ExecuteStoredProcedure(transactionDeleteProcedure); finalCount = context.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; } // ASSERT Assert.AreEqual(originalCount, finalCount); Assert.AreEqual(expectedIntermediateCount, intermediateCount); }
public void StoredProcedure_WithSqlTransactionRolledBack_DoesNotWriteRecords() { // ARRANGE const int expectedIntermediateCount = 3; int originalCount; int intermediateCount; int finalCount; string connectionString = Settings.Default.IntegrationTestConnection; var itemsToAdd = new List<TransactionTestParameterTableType> { new TransactionTestParameterTableType { Name = "Company 1", IsActive = true, Id = 1 }, new TransactionTestParameterTableType { Name = "Company 2", IsActive = false, Id = 2 }, new TransactionTestParameterTableType { Name = "Company 3", IsActive = true, Id = 3 } }; var transactionAddParameters = new TransactionTestAddStoredProcedure.Parameter { TvpParameters = itemsToAdd }; var transactionTestAddProcedure = new TransactionTestAddStoredProcedure(transactionAddParameters); var transactionTestCountProcedure = new TransactionTestCountAllStoredProcedure(); // ACT using (var connection = new SqlConnection(connectionString)) { connection.Open(); SqlTransaction transaction; using (transaction = connection.BeginTransaction()) { originalCount = connection.ExecuteStoredProcedure(transactionTestCountProcedure, transaction: transaction).First().Count; connection.ExecuteStoredProcedure(transactionTestAddProcedure, transaction: transaction); intermediateCount = connection.ExecuteStoredProcedure(transactionTestCountProcedure, transaction: transaction).First().Count; transaction.Rollback(); } } using (var connection = new SqlConnection(connectionString)) { connection.Open(); finalCount = connection.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; connection.Close(); } // ASSERT Assert.AreEqual(originalCount, finalCount); Assert.AreEqual(expectedIntermediateCount, intermediateCount); }
public void StoredProcedure_WithTransactionScopeNotCommited_DoesNotWriteRecords() { // ARRANGE const int expectedIntermediateCount = 3; int originalCount; int intermediateCount; int finalCount; var itemsToAdd = new List<TransactionTestParameterTableType> { new TransactionTestParameterTableType { Name = "Company 1", IsActive = true, Id = 1 }, new TransactionTestParameterTableType { Name = "Company 2", IsActive = false, Id = 2 }, new TransactionTestParameterTableType { Name = "Company 3", IsActive = true, Id = 3 } }; var transactionAddParameters = new TransactionTestAddStoredProcedure.Parameter { TvpParameters = itemsToAdd }; var transactionTestAddProcedure = new TransactionTestAddStoredProcedure(transactionAddParameters); var transactionTestCountProcedure = new TransactionTestCountAllStoredProcedure(); // ACT using (new TransactionScope(TransactionScopeOption.RequiresNew)) { using (var context = new IntegrationTestDbContext(_connectionName)) { originalCount = context.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; context.ExecuteStoredProcedure(transactionTestAddProcedure); intermediateCount = context.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; } } using (var context = new IntegrationTestDbContext(_connectionName)) { finalCount = context.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; } // ASSERT Assert.AreEqual(originalCount, finalCount); Assert.AreEqual(expectedIntermediateCount, intermediateCount); }
public void StoredProcedure_WithTransactionScopeCompleted_DoesWriteRecords() { // ARRANGE const int expectedIntermediateCount = 3; int originalCount; int intermediateCount; int finalCount; string connectionString = Settings.Default.IntegrationTestConnection; var itemsToAdd = new List<TransactionTestParameterTableType> { new TransactionTestParameterTableType { Name = "Company 1", IsActive = true, Id = 1 }, new TransactionTestParameterTableType { Name = "Company 2", IsActive = false, Id = 2 }, new TransactionTestParameterTableType { Name = "Company 3", IsActive = true, Id = 3 } }; var transactionAddParameters = new TransactionTestAddStoredProcedure.Parameter { TvpParameters = itemsToAdd }; var transactionTestAddProcedure = new TransactionTestAddStoredProcedure(transactionAddParameters); var transactionTestCountProcedure = new TransactionTestCountAllStoredProcedure(); var transactionDeleteProcedure = new TransactionTestDeleteAllStoredProcedure(); // ACT using (var transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew)) { using (var connection = new SqlConnection(connectionString)) { connection.Open(); originalCount = connection.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; connection.ExecuteStoredProcedure(transactionTestAddProcedure); transactionScope.Complete(); } } using (var connection = new SqlConnection(connectionString)) { connection.Open(); intermediateCount = connection.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; connection.ExecuteStoredProcedure(transactionDeleteProcedure); finalCount = connection.ExecuteStoredProcedure(transactionTestCountProcedure).First().Count; connection.Close(); } // ASSERT Assert.AreEqual(originalCount, finalCount); Assert.AreEqual(expectedIntermediateCount, intermediateCount); }