public void SaveUpdateThrowsUnableToCreateCommandException() { var customer = new Customer { ID = 1, Balance = 0, BalanceRate = 0, DefaultContactID = 1, Name = "Customer1", ProfileID = 1 }; var provider = new IProvider(); var transaction = new Mock<ITransaction>(); var schema = new TypeTable(typeof(Customer)); var reader = new DbDataReader(); reader.Setup(r => r.Read()).Returns(true); provider.Setup(p => p.GetSchema(typeof(Customer))).Returns(schema); provider.CommandExecutor.Setup(c => c.InitiateTransaction()).Returns(transaction.Object); provider.Setup(p => p.GetEntityStatus(customer)).Returns(EntityStatus.Update); provider.CommandBuilder.Setup(c => c.CreateUpdateCommand(customer)).Returns(default(Data.ICommand)); try { var target = new DataSession(provider.Object); target.Save(customer); } catch (Exception ex) { Assert.IsTrue(ex is UnableToCreateCommandException); } }
public void SaveRollBacksTransactionWhenExceptionThrown() { var customer = new Customer { ID = 1, Balance = 0, BalanceRate = 0, DefaultContactID = 1, Name = "Customer1", ProfileID = 1 }; var provider = new IProvider(); var transaction = new Mock<ITransaction>(); provider.CommandExecutor.Setup(c => c.InitiateTransaction()).Returns(transaction.Object); provider.Setup(p => p.GetEntityStatus(customer)).Returns(EntityStatus.Insert); provider.CommandBuilder.Setup(c => c.CreateInsertCommand(customer)).Returns(default(Data.ICommand)); var target = new DataSession(provider.Object); try { target.BeginTransaction(); target.Save(customer); } catch (Exception) { Assert.IsTrue(!target.IsTransactionInitiated); } }
public void SaveUpdate() { var customer = new Customer { ID = 1, Balance = 0, BalanceRate = 0, DefaultContactID = 1, Name = "Customer1", ProfileID = 1 }; var provider = new IProvider(); var transaction = new Mock<ITransaction>(); var command = new ICommand(); var schema = new TypeTable(typeof(Customer)); var reader = new DbDataReader(); reader.Setup(r => r.Read()).Returns(true); provider.Setup(p => p.GetSchema(typeof(Customer))).Returns(schema); provider.CommandExecutor.Setup(c => c.InitiateTransaction()).Returns(transaction.Object); provider.Setup(p => p.GetEntityStatus(customer)).Returns(EntityStatus.Update); provider.CommandBuilder.Setup(c => c.CreateUpdateCommand(customer)).Returns(command.Object); provider.CommandExecutor.Setup(c => c.ExecuteReader(command.Object, transaction.Object)).Returns( reader.Object); provider.Mapper.Setup(m => m.GetObjectMappingMethod(typeof(Customer))).Returns(d => customer); var target = new DataSession(provider.Object); target.Save(customer); provider.CommandExecutor.Verify(c => c.InitiateTransaction()); provider.CommandExecutor.Verify(c => c.CommitTransaction(transaction.Object)); Assert.IsTrue(customer.ID == 1); }
public void SaveThrowsArgumentNullException() { try { var provider = new IProvider(); var session = new DataSession(provider.Object); session.Save(null); } catch (Exception ex) { Assert.IsTrue(ex is ArgumentNullException); } }