public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) { $truncate = new PHPUnit_Extensions_Database_Operation_Truncate(true); $truncate->setCascade(true); $dataset = new OBM_Database_CsvDataSet(';'); $dataset->addTable('Entity'); $truncate->execute($connection, $dataset); $pdo = $connection->getConnection(); // we retrieve the PDO object parent::execute($connection, $dataSet); $dsIterator = $dataSet->getIterator(); foreach ($dsIterator as $table) { $tableName = $table->getTableMetaData()->getTableName(); if ($dataSet->isEntityTable($tableName)) { $entities = $dataSet->getEntityName($tableName); if(!is_array($entities)) $entities = array($entities); foreach($entities as $entity) { for ($i = 1; $i <= $table->getRowCount(); $i++) { $pdo->exec('INSERT INTO Entity (entity_mailing) VALUES (TRUE)'); $entityId = $pdo->lastInsertId(); $query = 'INSERT INTO '.ucfirst($entity).'Entity ('.$entity.'entity_entity_id, '.$entity.'entity_'.$entity.'_id ) SELECT MAX(entity_id), '.$i.' FROM Entity'; $pdo->exec($query); } } } } }
/** * Returns a truncate database operation. * * @param bool $cascadeTruncates Set to true to force truncates to cascade on databases that support this. * @return PHPUnit_Extensions_Database_Operation_IDatabaseOperation */ public static function TRUNCATE($cascadeTruncates = FALSE) { $truncate = new PHPUnit_Extensions_Database_Operation_Truncate(); $truncate->setCascade($cascadeTruncates); return $truncate; }
/** * Returns the database operation executed in test setup. * * @return PHPUnit_Extensions_Database_Operation_DatabaseOperation */ protected function getSetUpOperation() { $op = new PHPUnit_Extensions_Database_Operation_Truncate(); $op->setCascade(); return $op; }