diff --git a/tests/TransactionFirebirdTestCase.php b/tests/TransactionFirebirdTestCase.php new file mode 100644 index 000000000..765c65551 --- /dev/null +++ b/tests/TransactionFirebirdTestCase.php @@ -0,0 +1,74 @@ +transaction->createSavePoint('mypoint'); + + $this->assertEqual($this->adapter->pop(), 'SAVEPOINT mypoint'); + } + public function testReleaseSavePointExecutesSql() { + $this->transaction->releaseSavePoint('mypoint'); + + $this->assertEqual($this->adapter->pop(), 'RELEASE SAVEPOINT mypoint'); + } + public function testRollbackSavePointExecutesSql() { + $this->transaction->rollbackSavePoint('mypoint'); + + $this->assertEqual($this->adapter->pop(), 'ROLLBACK TO SAVEPOINT mypoint'); + } + public function testSetIsolationThrowsExceptionOnUnknownIsolationMode() { + try { + $this->transaction->setIsolation('unknown'); + $this->fail(); + } catch(Doctrine_Transaction_Exception $e) { + $this->pass(); + } + } + public function testSetIsolationThrowsExceptionOnUnknownWaitMode() { + try { + $this->transaction->setIsolation('READ UNCOMMITTED', array('wait' => 'unknown')); + $this->fail(); + } catch(Doctrine_Transaction_Exception $e) { + $this->pass(); + } + } + public function testSetIsolationThrowsExceptionOnUnknownReadWriteMode() { + try { + $this->transaction->setIsolation('READ UNCOMMITTED', array('rw' => 'unknown')); + $this->fail(); + } catch(Doctrine_Transaction_Exception $e) { + $this->pass(); + } + } + public function testSetIsolationExecutesSql() { + $this->transaction->setIsolation('READ UNCOMMITTED'); + $this->transaction->setIsolation('READ COMMITTED'); + $this->transaction->setIsolation('REPEATABLE READ'); + $this->transaction->setIsolation('SERIALIZABLE'); + + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL READ COMMITTED RECORD_VERSION'); + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL READ COMMITTED NO RECORD_VERSION'); + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL SNAPSHOT'); + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL SNAPSHOT TABLE STABILITY'); + } + public function testSetIsolationSupportsReadWriteOptions() { + $this->transaction->setIsolation('SERIALIZABLE', array('rw' => 'READ ONLY')); + + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION READ ONLY ISOLATION LEVEL SNAPSHOT TABLE STABILITY'); + + $this->transaction->setIsolation('SERIALIZABLE', array('rw' => 'READ WRITE')); + + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION READ WRITE ISOLATION LEVEL SNAPSHOT TABLE STABILITY'); + } + public function testSetIsolationSupportsWaitOptions() { + $this->transaction->setIsolation('SERIALIZABLE', array('wait' => 'NO WAIT')); + + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION NO WAIT ISOLATION LEVEL SNAPSHOT TABLE STABILITY'); + + $this->transaction->setIsolation('SERIALIZABLE', array('wait' => 'WAIT')); + + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION WAIT ISOLATION LEVEL SNAPSHOT TABLE STABILITY'); + } +} diff --git a/tests/TransactionMssqlTestCase.php b/tests/TransactionMssqlTestCase.php new file mode 100644 index 000000000..d69462a63 --- /dev/null +++ b/tests/TransactionMssqlTestCase.php @@ -0,0 +1,30 @@ +transaction->setIsolation('unknown'); + $this->fail(); + } catch(Doctrine_Transaction_Exception $e) { + $this->pass(); + } + } + public function testSetIsolationExecutesSql() { + $this->transaction->setIsolation('READ UNCOMMITTED'); + $this->transaction->setIsolation('READ COMMITTED'); + $this->transaction->setIsolation('REPEATABLE READ'); + $this->transaction->setIsolation('SERIALIZABLE'); + + $this->assertEqual($this->adapter->pop(), 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE'); + $this->assertEqual($this->adapter->pop(), 'SET TRANSACTION ISOLATION LEVEL REPEATABLE READ'); + $this->assertEqual($this->adapter->pop(), 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED'); + $this->assertEqual($this->adapter->pop(), 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED'); + } + public function testSetIsolationSupportsSnapshotMode() { + $this->transaction->setIsolation('SNAPSHOT'); + + $this->assertEqual($this->adapter->pop(), 'SET TRANSACTION ISOLATION LEVEL SNAPSHOT'); + } +} diff --git a/tests/TransactionOracleTestCase.php b/tests/TransactionOracleTestCase.php new file mode 100644 index 000000000..af918db04 --- /dev/null +++ b/tests/TransactionOracleTestCase.php @@ -0,0 +1,38 @@ +transaction->createSavePoint('mypoint'); + + $this->assertEqual($this->adapter->pop(), 'SAVEPOINT mypoint'); + } + public function testReleaseSavePointAlwaysReturnsTrue() { + $this->assertEqual($this->transaction->releaseSavePoint('mypoint'), true); + } + public function testRollbackSavePointExecutesSql() { + $this->transaction->rollbackSavePoint('mypoint'); + + $this->assertEqual($this->adapter->pop(), 'ROLLBACK TO SAVEPOINT mypoint'); + } + public function testSetIsolationThrowsExceptionOnUnknownIsolationMode() { + try { + $this->transaction->setIsolation('unknown'); + $this->fail(); + } catch(Doctrine_Transaction_Exception $e) { + $this->pass(); + } + } + public function testSetIsolationExecutesSql() { + $this->transaction->setIsolation('READ UNCOMMITTED'); + $this->transaction->setIsolation('READ COMMITTED'); + $this->transaction->setIsolation('REPEATABLE READ'); + $this->transaction->setIsolation('SERIALIZABLE'); + + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL READ UNCOMMITTED'); + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL SERIALIZABLE'); + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL SERIALIZABLE'); + $this->assertEqual($this->adapter->pop(), 'ALTER SESSION ISOLATION LEVEL SERIALIZABLE'); + } +} diff --git a/tests/TransactionSqliteTestCase.php b/tests/TransactionSqliteTestCase.php new file mode 100644 index 000000000..a0412e8ba --- /dev/null +++ b/tests/TransactionSqliteTestCase.php @@ -0,0 +1,25 @@ +transaction->setIsolation('unknown'); + $this->fail(); + } catch(Doctrine_Transaction_Exception $e) { + $this->pass(); + } + } + public function testSetIsolationExecutesSql() { + $this->transaction->setIsolation('READ UNCOMMITTED'); + $this->transaction->setIsolation('READ COMMITTED'); + $this->transaction->setIsolation('REPEATABLE READ'); + $this->transaction->setIsolation('SERIALIZABLE'); + + $this->assertEqual($this->adapter->pop(), 'PRAGMA read_uncommitted = 0'); + $this->assertEqual($this->adapter->pop(), 'PRAGMA read_uncommitted = 1'); + $this->assertEqual($this->adapter->pop(), 'PRAGMA read_uncommitted = 1'); + $this->assertEqual($this->adapter->pop(), 'PRAGMA read_uncommitted = 1'); + } +}