public void Flush_the_NHibernate_session()
        {
            using (Record)
            _mockSession.FlushMode = FlushMode.Commit;

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);
             }
        }
        public void Start_and_wrap_an_NHibernate_transaction()
        {
            ITransaction mockTransaction = Mock<ITransaction>();

             using (Record)
             {
            _mockSession.FlushMode = FlushMode.Commit;
            Expect.Call(_mockSession.IsOpen).Return(true);
            Expect.Call(_mockSession.BeginTransaction()).Return(mockTransaction);
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);
            Model.ITransaction transaction = sessionAdapter.CreateTransaction();
             }
        }
        public void Cause_the_underlying_NHibernate_query_to_clear()
        {
            using (Record)
             {
            _mockSession.FlushMode = FlushMode.Commit;
            Expect.Call(_mockSession.IsOpen).Return(true);
            _mockSession.Clear();
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);
            sessionAdapter.Clear();
             }
        }
        public void Delegate_to_an_NHibernate_session_on_flush()
        {
            using (Record)
             {
            _session.FlushMode = FlushMode.Commit;
            Expect.Call(_session.IsOpen).Return(true);
            _session.Flush();
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_session);
            sessionAdapter.Flush();
             }
        }
        public void Check_to_see_if_session_is_open_before_saving()
        {
            object fakeEntity = new object();

             using (Record)
             {
            _session.FlushMode = FlushMode.Commit;
            Expect.Call(_session.IsOpen).Return(true);
            _session.SaveOrUpdate(fakeEntity);
            LastCall.IgnoreArguments();
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter =
               new NHibernateSessionAdapter(_session);
            sessionAdapter.Save(fakeEntity);
             }
        }
        public void Attempt_to_open_a_closed_session()
        {
            object fakeEntity = new object();

             using (Record)
             {
            _session.FlushMode = FlushMode.Commit;
            Expect.Call(_session.IsOpen).Return(true);
            _session.SaveOrUpdate(fakeEntity);
            LastCall.IgnoreArguments();
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter =
               new NHibernateSessionAdapter(_session);
            sessionAdapter.Save(fakeEntity);
             }
        }
        public void Should_delegate_to_the_underlying_NHibernate_session_on_refresh()
        {
            object fakeEntity = new object();

             using (Record)
             {
            _mockSession.FlushMode = FlushMode.Commit;
            Expect.Call(_mockSession.IsOpen).Return(true);
            _mockSession.Refresh(fakeEntity);
            LastCall.IgnoreArguments();
             }

             using (Record)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);
            sessionAdapter.Refresh(fakeEntity);
             }
        }
        public void Should_throw_an_exception()
        {
            using (Record)
             {
            _session.FlushMode = FlushMode.Commit;
            Expect.Call(_session.IsOpen).Return(false);
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter =
               new NHibernateSessionAdapter(_session);
            sessionAdapter.Open();
             }
        }
        public void Fail_if_an_entity_was_not_found()
        {
            Guid entityID = Guid.NewGuid();

             using (Record)
             {
            _mockSession.FlushMode = FlushMode.Commit;
            Expect.Call(_mockSession.IsOpen).Return(true);
            Expect.Call(_mockSession.Load<FakeEntity>(entityID)).Throw(
               new UnresolvableObjectException(entityID, typeof(FakeEntity)));
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);

            try
            {
               sessionAdapter.Load<FakeEntity>(entityID);
            }
            catch (EntityNotFoundException ex)
            {
               Assert.AreEqual(entityID, ex.SuppliedEntityID);
               throw;
            }
             }
        }
        public void Delegate_to_an_NHibernate_session()
        {
            FakeEntity fakeEntity = new FakeEntity();

             using (Record)
             {
            _mockSession.FlushMode = FlushMode.Commit;
            Expect.Call(_mockSession.IsOpen).Return(true);
            Expect.Call(_mockSession.Load<FakeEntity>(Guid.NewGuid())).Return(fakeEntity);
            LastCall.IgnoreArguments();
             }

             using (Record)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);
            sessionAdapter.Load<FakeEntity>(new Guid());
             }
        }
        public void Map_to_and_execute_a_NHibernate_query()
        {
            IQuery iQuery = Mock<IQuery>();

             IList<FakeEntity> entities = new List<FakeEntity>();
             INamedQuery fakeQuery = new FakeNamedQuery();
             fakeQuery.SetParameter("TestID", Guid.Empty);

             using (Record)
             {
            _mockSession.FlushMode = FlushMode.Commit;
            Expect.Call(_mockSession.IsOpen).Return(true);
            Expect.Call(_mockSession.GetNamedQuery(fakeQuery.Name)).Return(iQuery);
            Expect.Call(iQuery.SetParameter("TestID", Guid.Empty)).Return(null);
            Expect.Call(iQuery.List<FakeEntity>()).Return(entities);
             }

             using (Playback)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);
            sessionAdapter.Query<FakeEntity>(fakeQuery);
             }
        }
        public void Delegate_to_the_NHibernate_session()
        {
            using (Record)
             {
            _mockSession.FlushMode = FlushMode.Commit;
            Expect.Call(_mockSession.IsOpen).Return(true);
            Expect.Call(_mockSession.Close()).Return(null);
             }

             using (Record)
             {
            NHibernateSessionAdapter sessionAdapter = new NHibernateSessionAdapter(_mockSession);
            sessionAdapter.Close();
             }
        }