public void Bulk_ShouldFlushAsync() { var mockDbConnection = new Mock <IDbConnection>(MockBehavior.Strict); mockDbConnection.Setup(c => c.CreateCommand()).Returns(() => new SqlCommand()); using (IBulkedDbConnection bulk = mockDbConnection.Object.CreateBulkedDbConnection()) { using (IDbCommand cmd = bulk.CreateCommand()) { cmd.CommandText = "DELETE FROM 'KUTYA'"; cmd.ExecuteNonQuery(); } string bulkCmd = bulk.ToString(); var mockDbCommand = new Mock <IDbCommand>(MockBehavior.Strict); mockDbCommand.Setup(cmd => cmd.ExecuteNonQuery()).Returns(0); mockDbCommand.Setup(cmd => cmd.Dispose()); mockDbCommand.SetupSet(cmd => cmd.CommandText = It.IsAny <string>()).Verifiable(); mockDbCommand.SetupSet(cmd => cmd.Transaction = null); mockDbCommand.SetupSet(cmd => cmd.CommandTimeout = It.IsAny <int>()); mockDbCommand.SetupGet(cmd => cmd.CommandText).Returns(bulkCmd); mockDbConnection.Setup(c => c.CreateCommand()).Returns(() => mockDbCommand.Object); Assert.DoesNotThrowAsync(() => bulk.FlushAsync()); Assert.That(bulk.ToString().Length, Is.EqualTo(0)); mockDbCommand.VerifySet(cmd => cmd.CommandText = It.Is <string>(val => val == bulkCmd)); mockDbCommand.Verify(cmd => cmd.ExecuteNonQuery(), Times.Once); } }
public void Bulk_ShouldNotAllowReadCommands() { var mockDbConnection = new Mock <IDbConnection>(MockBehavior.Strict); mockDbConnection.Setup(c => c.CreateCommand()).Returns(() => new SqlCommand()); using (IBulkedDbConnection bulk = mockDbConnection.Object.CreateBulkedDbConnection()) { using (IDbCommand cmd = bulk.CreateCommand()) { cmd.CommandText = "SELECT * FROM 'CICA'"; Assert.Throws <NotSupportedException>(() => cmd.ExecuteReader()); } } }
public void Bulk_ShouldHandleParameters() { var mockDbConnection = new Mock <IDbConnection>(MockBehavior.Strict); mockDbConnection.Setup(c => c.CreateCommand()).Returns(() => new SqlCommand()); using (IBulkedDbConnection bulk = mockDbConnection.Object.CreateBulkedDbConnection()) { using (IDbCommand cmd = bulk.CreateCommand()) { cmd.CommandText = "INSERT INTO Region (RegionID, RegionDescription) VALUES (@RegionID, @RegionDescription)"; cmd.Parameters.Add(new SqlParameter { DbType = DbType.Int32, ParameterName = "@RegionID", Value = 1 }); cmd.Parameters.Add(new SqlParameter { DbType = DbType.String, ParameterName = "@RegionDescription", Value = "cica" }); cmd.ExecuteNonQuery(); } Assert.That(bulk.ToString(), Is.EqualTo("INSERT INTO Region (RegionID, RegionDescription) VALUES (1, 'cica');\r\n")); } }
public void Bulk_ShouldInterceptWriteCommands() { const string CMD_1 = "DELETE FROM 'KUTYA'", CMD_2 = "DELETE FROM 'CICA'"; var mockDbConnection = new Mock <IDbConnection>(MockBehavior.Strict); mockDbConnection.Setup(c => c.CreateCommand()).Returns(() => new SqlCommand()); using (IBulkedDbConnection bulk = mockDbConnection.Object.CreateBulkedDbConnection()) { foreach (string command in new[] { CMD_1, CMD_2 }) { using (IDbCommand cmd = bulk.CreateCommand()) { cmd.CommandText = command; cmd.ExecuteNonQuery(); } } Assert.That(bulk.ToString(), Is.EqualTo($"{CMD_1};\r\n{CMD_2};\r\n")); } }