Beispiel #1
0
        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 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 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);
     }
 }