File indexing completed on 2025-02-23 05:32:49
0001 <?php 0002 /** 0003 * Zend Framework 0004 * 0005 * LICENSE 0006 * 0007 * This source file is subject to the new BSD license that is bundled 0008 * with this package in the file LICENSE.txt. 0009 * It is also available through the world-wide-web at this URL: 0010 * http://framework.zend.com/license/new-bsd 0011 * If you did not receive a copy of the license and are unable to 0012 * obtain it through the world-wide-web, please send an email 0013 * to license@zend.com so we can send you a copy immediately. 0014 * 0015 * @category Zend 0016 * @package Zend_Test 0017 * @subpackage PHPUnit 0018 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) 0019 * @license http://framework.zend.com/license/new-bsd New BSD License 0020 * @version $Id$ 0021 */ 0022 0023 /** 0024 * @see Zend_Test_PHPUnit_Db_Connection 0025 */ 0026 // require_once "Zend/Test/PHPUnit/Db/Connection.php"; 0027 0028 /** 0029 * Operation for Inserting on setup or teardown of a database tester. 0030 * 0031 * @uses PHPUnit_Extensions_Database_Operation_IDatabaseOperation 0032 * @category Zend 0033 * @package Zend_Test 0034 * @subpackage PHPUnit 0035 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) 0036 * @license http://framework.zend.com/license/new-bsd New BSD License 0037 */ 0038 class Zend_Test_PHPUnit_Db_Operation_Insert implements PHPUnit_Extensions_Database_Operation_IDatabaseOperation 0039 { 0040 /** 0041 * @param PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection 0042 * @param PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet 0043 */ 0044 public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection, PHPUnit_Extensions_Database_DataSet_IDataSet $dataSet) 0045 { 0046 if(!($connection instanceof Zend_Test_PHPUnit_Db_Connection)) { 0047 // require_once "Zend/Test/PHPUnit/Db/Exception.php"; 0048 throw new Zend_Test_PHPUnit_Db_Exception("Not a valid Zend_Test_PHPUnit_Db_Connection instance, ".get_class($connection)." given!"); 0049 } 0050 0051 $databaseDataSet = $connection->createDataSet(); 0052 0053 $dsIterator = $dataSet->getIterator(); 0054 0055 foreach($dsIterator as $table) { 0056 $tableName = $table->getTableMetaData()->getTableName(); 0057 0058 $db = $connection->getConnection(); 0059 for($i = 0; $i < $table->getRowCount(); $i++) { 0060 $values = $this->buildInsertValues($table, $i); 0061 try { 0062 $db->insert($tableName, $values); 0063 } catch (Exception $e) { 0064 throw new PHPUnit_Extensions_Database_Operation_Exception("INSERT", "INSERT INTO ".$tableName." [..]", $values, $table, $e->getMessage()); 0065 } 0066 } 0067 } 0068 } 0069 0070 /** 0071 * 0072 * @param PHPUnit_Extensions_Database_DataSet_ITable $table 0073 * @param int $rowNum 0074 * @return array 0075 */ 0076 protected function buildInsertValues(PHPUnit_Extensions_Database_DataSet_ITable $table, $rowNum) 0077 { 0078 $values = array(); 0079 foreach($table->getTableMetaData()->getColumns() as $columnName) { 0080 $values[$columnName] = $table->getValue($rowNum, $columnName); 0081 } 0082 return $values; 0083 } 0084 }