Beispiel #1
0
 /**
  * Creates a new database table object.
  *
  * @param PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData
  * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection
  */
 public function __construct(PHPUnit_Extensions_Database_DataSet_ITableMetaData $tableMetaData, PHPUnit_Extensions_Database_DB_IDatabaseConnection $databaseConnection)
 {
     $this->setTableMetaData($tableMetaData);
     $pdoStatement = $databaseConnection->getConnection()->prepare(PHPUnit_Extensions_Database_DB_DataSet::buildTableSelect($tableMetaData));
     $pdoStatement->execute();
     $this->data = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
 }
Beispiel #2
0
 public function execute(\PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, \PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     $connection->getConnection()->query("SET @PHAKE_PREV_foreign_key_checks = @@FOREIGN_KEY_CHECKS");
     $connection->getConnection()->query("SET FOREIGN_KEY_CHECKS = 0");
     parent::execute($connection, $dataSet);
     $connection->getConnection()->query("SET FOREIGN_KEY_CHECKS = @PHAKE_PREV_foreign_key_checks");
 }
Beispiel #3
0
    protected function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
    {
        $columnCount = count($table->getTableMetaData()->getColumns());

        if ($columnCount > 0) {
            $placeHolders = implode(', ', array_fill(0, $columnCount, '?'));

            $columns = '';
            foreach ($table->getTableMetaData()->getColumns() as $column) {
                $columns .= $connection->quoteSchemaObject($column).', ';
            }

            $columns = substr($columns, 0, -2);

            $query = "
                INSERT INTO {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())}
                ({$columns})
                VALUES
                ({$placeHolders})
            ";

            return $query;
        } else {
            return FALSE;
        }
    }
Beispiel #4
0
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     $connection->getConnection()->query("SET @PHAKE_PREV_foreign_key_checks = @@foreign_key_checks");
     $connection->getConnection()->query("SET foreign_key_checks = 0");
     parent::execute($connection, $dataSet);
     $connection->getConnection()->query("SET foreign_key_checks = @PHAKE_PREV_foreign_key_checks");
 }
Beispiel #5
0
 public function execute(\PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, \PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     foreach ($dataSet->getTableNames() as $tableName) {
         $connection->getConnection()->query("Alter Table {$tableName} NOCHECK Constraint All");
     }
     parent::execute($connection, $dataSet);
     foreach ($dataSet->getTableNames() as $tableName) {
         $connection->getConnection()->query("Alter Table {$tableName} CHECK Constraint All");
     }
 }
Beispiel #6
0
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     foreach ($dataSet->getReverseIterator() as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $query = "\n                DELETE FROM {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())}\n            ";
         try {
             $connection->getConnection()->query($query);
         } catch (PDOException $e) {
             throw new PHPUnit_Extensions_Database_Operation_Exception('DELETE_ALL', $query, array(), $table, $e->getMessage());
         }
     }
 }
Beispiel #7
0
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     foreach ($dataSet->getReverseIterator() as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $query = "\n                {$connection->getTruncateCommand()} {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())}\n            ";
         if ($this->useCascade && $connection->allowsCascading()) {
             $query .= " CASCADE";
         }
         try {
             $connection->getConnection()->query($query);
         } catch (PDOException $e) {
             throw new PHPUnit_Extensions_Database_Operation_Exception('TRUNCATE', $query, array(), $table, $e->getMessage());
         }
     }
 }
Beispiel #8
0
 public function execute(\PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, \PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     foreach ($dataSet->getTableNames() as $tableName) {
         $connection->getConnection()->query("Alter Table {$tableName} NOCHECK Constraint All");
     }
     foreach ($dataSet->getTableNames() as $tableName) {
         $connection->getConnection()->query("Delete From {$tableName}");
     }
     foreach ($dataSet->getTableNames() as $tableName) {
         $connection->getConnection()->query("DBCC CHECKIDENT ({$tableName}, RESEED, 0)");
     }
     foreach ($dataSet->getTableNames() as $tableName) {
         $connection->getConnection()->query("Alter Table {$tableName} CHECK Constraint All");
     }
 }
Beispiel #9
0
 public function execute(\PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, \PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     /* @var $connection DoctrineExtensions\PHPUnit\TestConnection */
     $conn = $connection->getConnection();
     foreach ($dataSet->getReverseIterator() as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $tableName = $connection->quoteSchemaObject($table->getTableMetaData()->getTableName());
         $query = $conn->getDatabasePlatform()->getTruncateTableSql($tableName, $this->useCascade);
         try {
             $connection->getConnection()->executeUpdate($query);
         } catch (\Exception $e) {
             throw new \PHPUnit_Extensions_Database_Operation_Exception('TRUNCATE', $query, array(), $table, $e->getMessage());
         }
     }
 }
Beispiel #10
0
 protected function loadData()
 {
     if ($this->data === NULL) {
         $pdoStatement = $this->databaseConnection->getConnection()->query($this->query);
         $this->data = $pdoStatement->fetchAll(PDO::FETCH_ASSOC);
     }
 }
Beispiel #11
0
 protected function buildPreparedColumnArray($columns, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
 {
     $columnArray = [];
     foreach ($columns as $columnName) {
         $columnArray[] = "{$connection->quoteSchemaObject($columnName)} = ?";
     }
     return $columnArray;
 }
Beispiel #12
0
 /**
  * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
  * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet
  */
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     $databaseDataSet = $connection->createDataSet();
     foreach ($dataSet as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName());
         $query = $this->buildOperationQuery($databaseTableMetaData, $table);
         $statement = $connection->getConnection()->prepare($query);
         for ($i = 0; $i < $table->getRowCount(); $i++) {
             $args = $this->buildOperationArguments($databaseTableMetaData, $table, $i);
             try {
                 $statement->execute($args);
             } catch (Exception $e) {
                 throw new PHPUnit_Extensions_Database_Operation_Exception($this->operationName, $query, $args, $table, $e->getMessage());
             }
         }
     }
 }
Beispiel #13
0
 protected function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
 {
     $columnCount = count($table->getTableMetaData()->getColumns());
     if ($columnCount > 0) {
         $placeHolders = '';
         foreach ($table->getTableMetaData()->getColumns() as $key => $column) {
             $placeHolders .= ':param' . $key . 'x, ';
         }
         $placeHolders = substr($placeHolders, 0, -2);
         $columns = '';
         foreach ($table->getTableMetaData()->getColumns() as $column) {
             $columns .= $connection->quoteSchemaObject($column) . ', ';
         }
         $columns = substr($columns, 0, -2);
         $query = "\n                INSERT INTO {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())}\n                ({$columns})\n                VALUES\n                ({$placeHolders})\n            ";
         return $query;
     } else {
         return FALSE;
     }
 }
Beispiel #14
0
 /**
  * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
  * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet
  */
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     $insertOperation = new PHPUnit_Extensions_Database_Operation_Insert();
     $updateOperation = new PHPUnit_Extensions_Database_Operation_Update();
     $databaseDataSet = $connection->createDataSet();
     foreach ($dataSet as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName());
         $insertQuery = $insertOperation->buildOperationQuery($databaseTableMetaData, $table, $connection);
         $updateQuery = $updateOperation->buildOperationQuery($databaseTableMetaData, $table, $connection);
         $selectQuery = $this->buildOperationQuery($databaseTableMetaData, $table, $connection);
         $insertStatement = $connection->getConnection()->prepare($insertQuery);
         $updateStatement = $connection->getConnection()->prepare($updateQuery);
         $selectStatement = $connection->getConnection()->prepare($selectQuery);
         $rowCount = $table->getRowCount();
         for ($i = 0; $i < $rowCount; $i++) {
             $selectArgs = $this->buildOperationArguments($databaseTableMetaData, $table, $i);
             $query = $selectQuery;
             $args = $selectArgs;
             try {
                 $selectStatement->execute($selectArgs);
                 if ($selectStatement->fetchColumn(0) > 0) {
                     $updateArgs = $updateOperation->buildOperationArguments($databaseTableMetaData, $table, $i);
                     $query = $updateQuery;
                     $args = $updateArgs;
                     $updateStatement->execute($updateArgs);
                 } else {
                     $insertArgs = $insertOperation->buildOperationArguments($databaseTableMetaData, $table, $i);
                     $query = $insertQuery;
                     $args = $insertArgs;
                     $insertStatement->execute($insertArgs);
                 }
             } catch (Exception $e) {
                 throw new PHPUnit_Extensions_Database_Operation_Exception($this->operationName, $query, $args, $table, $e->getMessage());
             }
         }
     }
 }
Beispiel #15
0
 protected function createTableMetaData()
 {
     if ($this->tableMetaData === NULL) {
         $this->loadData();
         // if some rows are in the table
         $columns = array();
         if (isset($this->data[0])) {
             // get column names from data
             $columns = array_keys($this->data[0]);
         } else {
             // if no rows found, get column names from database
             $pdoStatement = $this->databaseConnection->getConnection()->prepare("SELECT column_name FROM information_schema.COLUMNS WHERE table_schema=:schema AND table_name=:table");
             $pdoStatement->execute(array("table" => $this->tableName, "schema" => $this->databaseConnection->getSchema()));
             $columns = $pdoStatement->fetchAll(PDO::FETCH_COLUMN, 0);
         }
         // create metadata
         $this->tableMetaData = new PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData($this->tableName, $columns);
     }
 }
 /**
  * Disable foreign key constraint checking prior to running the stock PHPUnit
  * truncate operation and then re-enable it.
  *
  * @param \PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
  * @param \PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet
  * @return void
  */
 public function execute(\PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, \PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     if (defined('WPINC')) {
         $connection->getConnection()->query("SET foreign_key_checks = 0");
     }
     foreach ($dataSet->getReverseIterator() as $table) {
         /* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
         $query = "\n                {$connection->getTruncateCommand()}\n                {$connection->quoteSchemaObject($table->getTableMetaData()->getTableName())}\n            ";
         if (defined('WPINC')) {
             $query .= "";
         } else {
             $query .= " RESTART IDENTITY CASCADE";
         }
         try {
             $connection->getConnection()->query($query);
         } catch (PDOException $e) {
             throw new PHPUnit_Extensions_Database_Operation_Exception('TRUNCATE', $query, array(), $table, $e->getMessage());
         }
     }
     if (defined('WPINC')) {
         $connection->getConnection()->query("SET foreign_key_checks = 1");
     }
 }
Beispiel #17
0
 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet)
 {
     $connection->getConnection()->query('SET ' . $this->_elem . '=' . $this->_value);
 }
Beispiel #18
0
 public function decorateConnectionGetConnectionWith($returnValue)
 {
     $this->connectionMock->expects($this->any())->method('getConnection')->will($this->returnValue($returnValue));
 }
Beispiel #19
0
 public function testGetAdapterConvenienceMethod()
 {
     $this->_connectionMock->expects($this->once())->method('getConnection');
     $this->getAdapter();
 }
Beispiel #20
0
 /**
  * Returns a list of table names for the database
  *
  * @return Array
  */
 public function getTableNames()
 {
     return $this->databaseConnection->getMetaData()->getTableNames();
 }
Beispiel #21
0
 private function isMysql(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
 {
     return $connection->getConnection()->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql';
 }
Beispiel #22
0
 /**
  * Closes the specified connection.
  *
  * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection
  */
 public function closeConnection(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
 {
     $connection->close();
 }
 public function __construct(IDatabaseConnection $connection)
 {
     $this->connection = $connection;
     $this->setUpOperation = new \PHPUnit_Extensions_Database_Operation_Composite(array(new Operations\Truncate($connection->allowsCascading()), OperationFactory::INSERT()));
     $this->tearDownOperation = OperationFactory::NONE();
 }