public void TestAcceptance_NumberGeneratorCreatedInBeforeUpdateForAnObject_2ObjectsInTransaction() { //---------------Set up test pack------------------- //Create an object that sets the number generator for it. // CleanUpContactPersonNumberGenerator(); BORegistry.DataAccessor = new DataAccessorInMemory(); TestNumberGenerator.CleanUpContactPersonNumberGenerator_ForInMemory(); //---------------Set up test pack------------------- //Create an objects that sets the number generator for it. //Edit the objects. var cp = new ContactPersonWithNumberGenerator(); cp.Surname = Guid.NewGuid().ToString(); var cp2 = new ContactPersonWithNumberGenerator(); cp2.Surname = Guid.NewGuid().ToString(); //---------------Execute Test ---------------------- //Add the objects TransactionCommitterStubDB trnCommit = new TransactionCommitterStubDB(DatabaseConnection.CurrentConnection); trnCommit.AddBusinessObject(cp); trnCommit.AddBusinessObject(cp2); trnCommit.CommitTransaction(); //---------------Test Result ----------------------- //check that the objects have its number set to the appropriate value. Assert.AreEqual("1", cp.GeneratedNumber); Assert.AreEqual("2", cp2.GeneratedNumber); //---------------Tear Down ------------------------- }
public void TestRaisesException_onError() { //---------------Set up test pack------------------- TransactionCommitter committerDB = new TransactionCommitterStubDB(DatabaseConnection.CurrentConnection); StubFailingTransaction trn = new StubFailingTransaction(); committerDB.AddTransaction(trn); committerDB.AddTransaction(new StubSuccessfullTransaction()); //---------------Execute Test ---------------------- try { committerDB.CommitTransaction(); Assert.Fail("Expected to throw an NotImplementedException"); } //---------------Test Result ----------------------- catch (NotImplementedException) { } }
public void TestUpdateBeforePersistCalled() { //---------------Set up test pack------------------- TransactionCommitterStubDB trnCommitter = new TransactionCommitterStubDB(DatabaseConnection.CurrentConnection); bool updateBeforePersistCalled = false; MockBOWithUpdateBeforePersistDelegate mockBo = new MockBOWithUpdateBeforePersistDelegate( delegate { updateBeforePersistCalled = true; }); trnCommitter.AddBusinessObject(mockBo); //-------------Assert Preconditions ------------- //---------------Execute Test ---------------------- trnCommitter.CommitTransaction(); //---------------Test Result ----------------------- Assert.IsTrue(updateBeforePersistCalled); }
public void TestRaisesException_onError_DoesNotCommit() { //---------------Set up test pack------------------- TransactionCommitter committer = new TransactionCommitterStubDB(DatabaseConnection.CurrentConnection); StubDatabaseTransaction transactional1 = new StubDatabaseTransaction(); committer.AddTransaction(transactional1); StubFailingTransaction transactional2 = new StubFailingTransaction(); committer.AddTransaction(transactional2); //---------------Execute Test ---------------------- try { committer.CommitTransaction(); Assert.Fail("Failure should have occurred as a StubFailingTransaction was added"); } //---------------Test Result ----------------------- catch (NotImplementedException) { Assert.IsFalse(transactional1.Committed); Assert.IsFalse(transactional2.Committed); } }
public void TestUpdateBeforePersistCalled_ForBoAddedInUpdateBeforePersist() { //---------------Set up test pack------------------- TransactionCommitterStubDB trnCommitter = new TransactionCommitterStubDB(DatabaseConnection.CurrentConnection); bool updateBeforePersistCalled = false; bool updateBeforePersistCalledForInner = false; MockBOWithUpdateBeforePersistDelegate innerMockBo = new MockBOWithUpdateBeforePersistDelegate( delegate { updateBeforePersistCalledForInner = true; }); MockBOWithUpdateBeforePersistDelegate mockBo = new MockBOWithUpdateBeforePersistDelegate( delegate(ITransactionCommitter committer) { updateBeforePersistCalled = true; committer.AddBusinessObject(innerMockBo); }); trnCommitter.AddBusinessObject(mockBo); //-------------Assert Preconditions ------------- Assert.AreEqual(1, trnCommitter.GetOriginalTransactions().Count); Assert.IsFalse(updateBeforePersistCalled); Assert.IsFalse(updateBeforePersistCalledForInner); //---------------Execute Test ---------------------- trnCommitter.CommitTransaction(); //---------------Test Result ----------------------- Assert.AreEqual(2, trnCommitter.GetOriginalTransactions().Count); Assert.IsTrue(updateBeforePersistCalled); Assert.IsTrue(updateBeforePersistCalledForInner); }
public void TestRollBack_OnError() { //---------------Set up test pack------------------- //Create object in DB MockBoWithRollBack mockBo = new MockBoWithRollBack(); StubDatabaseFailureTransaction trnFail = new StubDatabaseFailureTransaction(); TransactionCommitterStubDB trnCommitter = new TransactionCommitterStubDB(DatabaseConnection.CurrentConnection); trnCommitter.AddBusinessObject(mockBo); trnCommitter.AddTransaction(trnFail); Assert.IsFalse(mockBo.RollBackExecuted); //---------------Execute Test ---------------------- try { trnCommitter.CommitTransaction(); Assert.Fail(); } //---------------Test Result ----------------------- //Raise Exception that the object has been edited since // the user last edited. catch (NotImplementedException) { Assert.IsTrue(mockBo.RollBackExecuted); } }