public void Dispose_Clears_Current_UnitOfWork()
        {
            // Arrange
            var uow = new UnitOfWork(_session, _transaction);
            UnitOfWorkFactory.SetGlobalUnitOfWork(uow);

            Assert.IsNotNull(UnitOfWorkFactory.CurrentUnitOfWork);

            // Act
            uow.Dispose();

            // Assert
            try
            {
                Assert.IsNull(UnitOfWorkFactory.CurrentUnitOfWork);
            }
            catch (InvalidOperationException)
            {
                // Should exception as CurrentUnitOfWork is null.
            }
        }
        public void Dispose_Disposes_Current_Transaction()
        {
            // Arrange
            var uow = new UnitOfWork(_session, _transaction);

            // Act
            uow.Dispose();

            // Assert
            _transaction.AssertWasCalled(trans => trans.Dispose());
        }
        public void Dispose_Closes_And_Disposes_Current_Session()
        {
            // Arrange
            var uow = new UnitOfWork(_session, _transaction);

            // Act
            uow.Dispose();

            // Assert
            _session.AssertWasCalled(sess => sess.Close());
            _session.AssertWasCalled(sess => sess.Dispose());
        }