Exemplo n.º 1
0
 public void BasicTransactionRollback()
 {
     using (GlobalTransactionManager.BeginTransaction())
     {
         Int32 count = DataAccess.CreateQuery("Insert into FirstTable (field1, field2) values (1, 'test')").ExecuteNonQuery();
         Assert.That(count, Is.EqualTo(1));
         GlobalTransactionManager.DoomCurrentTransaction();
     }
     DbAssert.OnQuery("Select count(*) cnt from FirstTable").That("cnt", Is.EqualTo(0)).ExecuteAssert();
 }
        public void VerifyThatSessionIsDisposedWhenRollbackOccurredEvenIfCreatedOutsideTransaction()
        {
            ISession session1 = NHibernateSessionManager.GetSessionFor("files\\NhConfigFile1.cfg.xml");

            using (GlobalTransactionManager.BeginTransaction())
            {
                GlobalTransactionManager.DoomCurrentTransaction();
            }
            Assert.That(session1.IsOpen, Is.False);
        }
        public void DoomedTransactionIsRollbacked()
        {
            Action <Boolean> mock = mockRepository.CreateMock <Action <Boolean> >();

            mock(false);             //Sets the expectation
            mockRepository.ReplayAll();
            using (GlobalTransactionManager.BeginTransaction())
            {
                GlobalTransactionManager.Enlist(mock);
                GlobalTransactionManager.DoomCurrentTransaction();
            }
        }
        public void VerifyTransactionClosedDoomedTrue()
        {
            ITranEvSink mock = mockRepository.CreateMock <ITranEvSink>();

            Expect.Call(() => mock.Handle(null, null))
            .Constraints(RhinoIs.Null(), RhinoIs.Matching <TransactionClosedEventArgs>(args => args.IsDoomed == true));
            GlobalTransactionManager.TransactionClosed += mock.Handle;
            ExecuteAtTheEndOfTest(() => GlobalTransactionManager.TransactionClosed -= mock.Handle);
            mockRepository.ReplayAll();
            using (GlobalTransactionManager.BeginTransaction())
            {
                GlobalTransactionManager.DoomCurrentTransaction();
            }
        }
Exemplo n.º 5
0
 public void DistinctDbTransactionAccessInTransaction()
 {
     using (GlobalTransactionManager.BeginTransaction())
     {
         DataAccess.CreateQuery("Insert into FirstTable (field1, field2) values (1, 'test')")
         .ExecuteNonQuery();
         DataAccess.OnDb("secondary")
         .CreateQuery("Insert into SecondaryFirstTable (field1, field2) values (1, 'test')")
         .ExecuteNonQuery();
         //VErify that in transaction all data is queryable
         DbAssert.OnQuery("Select count(*) cnt from FirstTable").That("cnt", Is.EqualTo(1)).ExecuteAssert();
         DbAssert.OnDb("secondary").WithQuery("Select count(*) cnt from SecondaryFirstTable").That("cnt", Is.EqualTo(1)).ExecuteAssert();
         GlobalTransactionManager.DoomCurrentTransaction();
     }
 }
Exemplo n.º 6
0
 public void MultipleTransactionRollbackAndCommit()
 {
     using (GlobalTransactionManager.BeginTransaction())
     {
         using (GlobalTransactionManager.BeginTransaction())
         {
             DataAccess.CreateQuery("Insert into FirstTable (field1, field2) values (1, 'test1')").ExecuteNonQuery();
             GlobalTransactionManager.DoomCurrentTransaction();
         }
         DataAccess.CreateQuery("Insert into FirstTable (field1, field2) values (1, 'test2')").ExecuteNonQuery();
     }
     //inner transaction is rollbacked, but the external one no, so I should see second row
     DbAssert.OnQuery("Select count(*) cnt from FirstTable")
     .That("cnt", Is.EqualTo(1)).ExecuteAssert();
     DbAssert.OnQuery("Select field2 from FirstTable")
     .That("field2", Is.EqualTo("test2")).ExecuteAssert();
 }
        public void TestEnlistInGlobalTransaction()
        {
            Int32 insertedId;

            using (GlobalTransactionManager.BeginTransaction())
            {
                using (ISession session = NHibernateSessionManager.GetSessionFor("files\\NhConfigFile1.cfg.xml"))
                {
                    AnEntity e = AnEntity.CreateSome();
                    insertedId = (Int32)session.Save(e);
                }
                GlobalTransactionManager.DoomCurrentTransaction();
            }
            DbAssert.OnQuery("select count(*) cnt from AnEntity where id = {id}")
            .SetInt32Param("id", insertedId)
            .That("cnt", Is.EqualTo(0)).ExecuteAssert();
        }
Exemplo n.º 8
0
 public void MultipleTransactionSeeDataCommittedInNested()
 {
     using (GlobalTransactionManager.BeginTransaction())
     {
         using (GlobalTransactionManager.BeginTransaction())
         {
             Int32 count = DataAccess.CreateQuery("Insert into FirstTable (field1, field2) values (1, 'test1')").ExecuteNonQuery();
             Assert.That(count, Is.EqualTo(1));
         }
         //First transaction is committed I should see data into db
         GlobalTransactionManager.DoomCurrentTransaction();
         DbAssert.OnQuery("Select count(*) cnt from FirstTable")
         .That("cnt", Is.EqualTo(1)).ExecuteAssert();
     }
     //Transaction is doomed, so the row disappeared
     DbAssert.OnQuery("Select count(*) cnt from FirstTable")
     .That("cnt", Is.EqualTo(0)).ExecuteAssert();
 }
Exemplo n.º 9
0
 public void MultipleTransactionFirstRollbackThenCommitt()
 {
     using (GlobalTransactionManager.BeginTransaction())
     {
         using (GlobalTransactionManager.BeginTransaction())
         {
             DataAccess.CreateQuery("Insert into FirstTable (field1, field2) values (1, 'test1')").ExecuteNonQuery();
             GlobalTransactionManager.DoomCurrentTransaction();
         }
         using (GlobalTransactionManager.BeginTransaction())
         {
             DataAccess.CreateQuery("Insert into FirstTable (field1, field2) values (2, 'test2')").ExecuteNonQuery();
             DbAssert.OnQuery("Select count(*) cnt from FirstTable")
             .That("cnt", Is.EqualTo(1)).ExecuteAssert();
         }
         DbAssert.OnQuery("Select count(*) cnt from FirstTable")
         .That("cnt", Is.EqualTo(1)).ExecuteAssert();
     }
     DbAssert.OnQuery("Select count(*) cnt from FirstTable")
     .That("cnt", Is.EqualTo(1)).ExecuteAssert();
 }