Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Initial work on a trait that provides the functionality of PHPUnit_Ex…

…tensions_Database_TestCase (and can be used instead of it)
  • Loading branch information...
commit 7a8007cab7f1d6fcb9977550eeaf3cb180829fbb 1 parent 3ccd225
@sebastianbergmann authored
View
240 src/Extensions/Database/TestCase.php
@@ -16,243 +16,5 @@
*/
abstract class PHPUnit_Extensions_Database_TestCase extends PHPUnit_Framework_TestCase
{
- /**
- * @var PHPUnit_Extensions_Database_ITester
- */
- protected $databaseTester;
-
- /**
- * Closes the specified connection.
- *
- * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
- */
- protected function closeConnection(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
- {
- $this->getDatabaseTester()->closeConnection($connection);
- }
-
- /**
- * Returns the test database connection.
- *
- * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection
- */
- protected abstract function getConnection();
-
- /**
- * Gets the IDatabaseTester for this testCase. If the IDatabaseTester is
- * not set yet, this method calls newDatabaseTester() to obtain a new
- * instance.
- *
- * @return PHPUnit_Extensions_Database_ITester
- */
- protected function getDatabaseTester()
- {
- if (empty($this->databaseTester)) {
- $this->databaseTester = $this->newDatabaseTester();
- }
-
- return $this->databaseTester;
- }
-
- /**
- * Returns the test dataset.
- *
- * @return PHPUnit_Extensions_Database_DataSet_IDataSet
- */
- protected abstract function getDataSet();
-
- /**
- * Returns the database operation executed in test setup.
- *
- * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation
- */
- protected function getSetUpOperation()
- {
- return PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT();
- }
-
- /**
- * Returns the database operation executed in test cleanup.
- *
- * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation
- */
- protected function getTearDownOperation()
- {
- return PHPUnit_Extensions_Database_Operation_Factory::NONE();
- }
-
- /**
- * Creates a IDatabaseTester for this testCase.
- *
- * @return PHPUnit_Extensions_Database_ITester
- */
- protected function newDatabaseTester()
- {
- return new PHPUnit_Extensions_Database_DefaultTester($this->getConnection());
- }
-
- /**
- * Creates a new DefaultDatabaseConnection using the given PDO connection
- * and database schema name.
- *
- * @param PDO $connection
- * @param string $schema
- * @return PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection
- */
- protected function createDefaultDBConnection(PDO $connection, $schema = '')
- {
- return new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($connection, $schema);
- }
-
- /**
- * Creates a new ArrayDataSet with the given array.
- * The array parameter is an associative array of tables where the key is
- * the table name and the value an array of rows. Each row is an associative
- * array by itself with keys representing the field names and the values the
- * actual data.
- * For example:
- * array(
- * "addressbook" => array(
- * array("id" => 1, "name" => "...", "address" => "..."),
- * array("id" => 2, "name" => "...", "address" => "...")
- * )
- * )
- *
- * @param array $data
- * @return PHPUnit_Extensions_Database_DataSet_ArrayDataSet
- */
- protected function createArrayDataSet(array $data)
- {
- return new PHPUnit_Extensions_Database_DataSet_ArrayDataSet($data);
- }
-
- /**
- * Creates a new FlatXmlDataSet with the given $xmlFile. (absolute path.)
- *
- * @param string $xmlFile
- * @return PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet
- */
- protected function createFlatXMLDataSet($xmlFile)
- {
- return new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet($xmlFile);
- }
-
- /**
- * Creates a new XMLDataSet with the given $xmlFile. (absolute path.)
- *
- * @param string $xmlFile
- * @return PHPUnit_Extensions_Database_DataSet_XmlDataSet
- */
- protected function createXMLDataSet($xmlFile)
- {
- return new PHPUnit_Extensions_Database_DataSet_XmlDataSet($xmlFile);
- }
-
- /**
- * Create a a new MysqlXmlDataSet with the given $xmlFile. (absolute path.)
- *
- * @param string $xmlFile
- * @return PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet
- * @since Method available since Release 1.0.0
- */
- protected function createMySQLXMLDataSet($xmlFile)
- {
- return new PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet($xmlFile);
- }
-
- /**
- * Returns an operation factory instance that can be used to instantiate
- * new operations.
- *
- * @return PHPUnit_Extensions_Database_Operation_Factory
- */
- protected function getOperations()
- {
- return new PHPUnit_Extensions_Database_Operation_Factory();
- }
-
- /**
- * Performs operation returned by getSetUpOperation().
- */
- protected function setUp()
- {
- parent::setUp();
-
- $this->databaseTester = NULL;
-
- $this->getDatabaseTester()->setSetUpOperation($this->getSetUpOperation());
- $this->getDatabaseTester()->setDataSet($this->getDataSet());
- $this->getDatabaseTester()->onSetUp();
- }
-
- /**
- * Performs operation returned by getTearDownOperation().
- */
- protected function tearDown()
- {
- $this->getDatabaseTester()->setTearDownOperation($this->getTearDownOperation());
- $this->getDatabaseTester()->setDataSet($this->getDataSet());
- $this->getDatabaseTester()->onTearDown();
-
- /*
- * Destroy the tester after the test is run to keep DB connections
- * from piling up.
- */
- $this->databaseTester = NULL;
- }
-
- /**
- * Asserts that two given tables are equal.
- *
- * @param PHPUnit_Extensions_Database_DataSet_ITable $expected
- * @param PHPUnit_Extensions_Database_DataSet_ITable $actual
- * @param string $message
- */
- public static function assertTablesEqual(PHPUnit_Extensions_Database_DataSet_ITable $expected, PHPUnit_Extensions_Database_DataSet_ITable $actual, $message = '')
- {
- $constraint = new PHPUnit_Extensions_Database_Constraint_TableIsEqual($expected);
-
- self::assertThat($actual, $constraint, $message);
- }
-
- /**
- * Asserts that two given datasets are equal.
- *
- * @param PHPUnit_Extensions_Database_DataSet_ITable $expected
- * @param PHPUnit_Extensions_Database_DataSet_ITable $actual
- * @param string $message
- */
- public static function assertDataSetsEqual(PHPUnit_Extensions_Database_DataSet_IDataSet $expected, PHPUnit_Extensions_Database_DataSet_IDataSet $actual, $message = '')
- {
- $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($expected);
-
- self::assertThat($actual, $constraint, $message);
- }
-
- /**
- * Assert that a given table has a given amount of rows
- *
- * @param string $tableName Name of the table
- * @param int $expected Expected amount of rows in the table
- * @param string $message Optional message
- */
- public function assertTableRowCount($tableName, $expected, $message = '')
- {
- $constraint = new PHPUnit_Extensions_Database_Constraint_TableRowCount($tableName, $expected);
- $actual = $this->getConnection()->getRowCount($tableName);
-
- self::assertThat($actual, $constraint, $message);
- }
-
- /**
- * Asserts that a given table contains a given row
- *
- * @param array $expectedRow Row expected to find
- * @param PHPUnit_Extensions_Database_DataSet_ITable $table Table to look into
- * @param string $message Optional message
- */
- public function assertTableContains(array $expectedRow, PHPUnit_Extensions_Database_DataSet_ITable $table, $message = '')
- {
- self::assertThat($table->assertContainsRow($expectedRow), self::isTrue(), $message);
- }
+ use PHPUnit_Extensions_Database_TestCase_Trait;
}
View
252 src/Extensions/Database/TestCaseTrait.php
@@ -0,0 +1,252 @@
+<?php
+/*
+ * This file is part of DBUnit.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+trait PHPUnit_Extensions_Database_TestCase_Trait
+{
+ /**
+ * @var PHPUnit_Extensions_Database_ITester
+ */
+ protected $databaseTester;
+
+ /**
+ * Closes the specified connection.
+ *
+ * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
+ */
+ protected function closeConnection(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
+ {
+ $this->getDatabaseTester()->closeConnection($connection);
+ }
+
+ /**
+ * Returns the test database connection.
+ *
+ * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection
+ */
+ protected abstract function getConnection();
+
+ /**
+ * Gets the IDatabaseTester for this testCase. If the IDatabaseTester is
+ * not set yet, this method calls newDatabaseTester() to obtain a new
+ * instance.
+ *
+ * @return PHPUnit_Extensions_Database_ITester
+ */
+ protected function getDatabaseTester()
+ {
+ if (empty($this->databaseTester)) {
+ $this->databaseTester = $this->newDatabaseTester();
+ }
+
+ return $this->databaseTester;
+ }
+
+ /**
+ * Returns the test dataset.
+ *
+ * @return PHPUnit_Extensions_Database_DataSet_IDataSet
+ */
+ protected abstract function getDataSet();
+
+ /**
+ * Returns the database operation executed in test setup.
+ *
+ * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation
+ */
+ protected function getSetUpOperation()
+ {
+ return PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT();
+ }
+
+ /**
+ * Returns the database operation executed in test cleanup.
+ *
+ * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation
+ */
+ protected function getTearDownOperation()
+ {
+ return PHPUnit_Extensions_Database_Operation_Factory::NONE();
+ }
+
+ /**
+ * Creates a IDatabaseTester for this testCase.
+ *
+ * @return PHPUnit_Extensions_Database_ITester
+ */
+ protected function newDatabaseTester()
+ {
+ return new PHPUnit_Extensions_Database_DefaultTester($this->getConnection());
+ }
+
+ /**
+ * Creates a new DefaultDatabaseConnection using the given PDO connection
+ * and database schema name.
+ *
+ * @param PDO $connection
+ * @param string $schema
+ * @return PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection
+ */
+ protected function createDefaultDBConnection(PDO $connection, $schema = '')
+ {
+ return new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($connection, $schema);
+ }
+
+ /**
+ * Creates a new ArrayDataSet with the given array.
+ * The array parameter is an associative array of tables where the key is
+ * the table name and the value an array of rows. Each row is an associative
+ * array by itself with keys representing the field names and the values the
+ * actual data.
+ * For example:
+ * array(
+ * "addressbook" => array(
+ * array("id" => 1, "name" => "...", "address" => "..."),
+ * array("id" => 2, "name" => "...", "address" => "...")
+ * )
+ * )
+ *
+ * @param array $data
+ * @return PHPUnit_Extensions_Database_DataSet_ArrayDataSet
+ */
+ protected function createArrayDataSet(array $data)
+ {
+ return new PHPUnit_Extensions_Database_DataSet_ArrayDataSet($data);
+ }
+
+ /**
+ * Creates a new FlatXmlDataSet with the given $xmlFile. (absolute path.)
+ *
+ * @param string $xmlFile
+ * @return PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet
+ */
+ protected function createFlatXMLDataSet($xmlFile)
+ {
+ return new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet($xmlFile);
+ }
+
+ /**
+ * Creates a new XMLDataSet with the given $xmlFile. (absolute path.)
+ *
+ * @param string $xmlFile
+ * @return PHPUnit_Extensions_Database_DataSet_XmlDataSet
+ */
+ protected function createXMLDataSet($xmlFile)
+ {
+ return new PHPUnit_Extensions_Database_DataSet_XmlDataSet($xmlFile);
+ }
+
+ /**
+ * Create a a new MysqlXmlDataSet with the given $xmlFile. (absolute path.)
+ *
+ * @param string $xmlFile
+ * @return PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet
+ * @since Method available since Release 1.0.0
+ */
+ protected function createMySQLXMLDataSet($xmlFile)
+ {
+ return new PHPUnit_Extensions_Database_DataSet_MysqlXmlDataSet($xmlFile);
+ }
+
+ /**
+ * Returns an operation factory instance that can be used to instantiate
+ * new operations.
+ *
+ * @return PHPUnit_Extensions_Database_Operation_Factory
+ */
+ protected function getOperations()
+ {
+ return new PHPUnit_Extensions_Database_Operation_Factory();
+ }
+
+ /**
+ * Performs operation returned by getSetUpOperation().
+ */
+ protected function setUp()
+ {
+ parent::setUp();
+
+ $this->databaseTester = NULL;
+
+ $this->getDatabaseTester()->setSetUpOperation($this->getSetUpOperation());
+ $this->getDatabaseTester()->setDataSet($this->getDataSet());
+ $this->getDatabaseTester()->onSetUp();
+ }
+
+ /**
+ * Performs operation returned by getTearDownOperation().
+ */
+ protected function tearDown()
+ {
+ $this->getDatabaseTester()->setTearDownOperation($this->getTearDownOperation());
+ $this->getDatabaseTester()->setDataSet($this->getDataSet());
+ $this->getDatabaseTester()->onTearDown();
+
+ /*
+ * Destroy the tester after the test is run to keep DB connections
+ * from piling up.
+ */
+ $this->databaseTester = NULL;
+ }
+
+ /**
+ * Asserts that two given tables are equal.
+ *
+ * @param PHPUnit_Extensions_Database_DataSet_ITable $expected
+ * @param PHPUnit_Extensions_Database_DataSet_ITable $actual
+ * @param string $message
+ */
+ public static function assertTablesEqual(PHPUnit_Extensions_Database_DataSet_ITable $expected, PHPUnit_Extensions_Database_DataSet_ITable $actual, $message = '')
+ {
+ $constraint = new PHPUnit_Extensions_Database_Constraint_TableIsEqual($expected);
+
+ self::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two given datasets are equal.
+ *
+ * @param PHPUnit_Extensions_Database_DataSet_ITable $expected
+ * @param PHPUnit_Extensions_Database_DataSet_ITable $actual
+ * @param string $message
+ */
+ public static function assertDataSetsEqual(PHPUnit_Extensions_Database_DataSet_IDataSet $expected, PHPUnit_Extensions_Database_DataSet_IDataSet $actual, $message = '')
+ {
+ $constraint = new PHPUnit_Extensions_Database_Constraint_DataSetIsEqual($expected);
+
+ self::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Assert that a given table has a given amount of rows
+ *
+ * @param string $tableName Name of the table
+ * @param int $expected Expected amount of rows in the table
+ * @param string $message Optional message
+ */
+ public function assertTableRowCount($tableName, $expected, $message = '')
+ {
+ $constraint = new PHPUnit_Extensions_Database_Constraint_TableRowCount($tableName, $expected);
+ $actual = $this->getConnection()->getRowCount($tableName);
+
+ self::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that a given table contains a given row
+ *
+ * @param array $expectedRow Row expected to find
+ * @param PHPUnit_Extensions_Database_DataSet_ITable $table Table to look into
+ * @param string $message Optional message
+ */
+ public function assertTableContains(array $expectedRow, PHPUnit_Extensions_Database_DataSet_ITable $table, $message = '')
+ {
+ self::assertThat($table->assertContainsRow($expectedRow), self::isTrue(), $message);
+ }
+}
Please sign in to comment.
Something went wrong with that request. Please try again.