Skip to content

Commit

Permalink
Merged [2827]
Browse files Browse the repository at this point in the history
  • Loading branch information
mlively committed Apr 20, 2008
1 parent 020680e commit e8ed23f
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 18 deletions.
5 changes: 4 additions & 1 deletion PHPUnit/Extensions/Database/DataSet/FlatXmlDataSet.php
Expand Up @@ -87,7 +87,10 @@ protected function getTableInfo(Array &$tableColumns, Array &$tableValues)

$values[$name] = $value;
}
$tableValues[$tableName][] = $values;

if (count($values)) {
$tableValues[$tableName][] = $values;
}
}
}
}
Expand Down
39 changes: 22 additions & 17 deletions PHPUnit/Extensions/Database/Operation/Insert.php
Expand Up @@ -71,24 +71,29 @@ class PHPUnit_Extensions_Database_Operation_Insert extends PHPUnit_Extensions_Da

protected function buildOperationQuery(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, PHPUnit_Extensions_Database_DB_IDatabaseConnection $connection)
{
$placeHolders = implode(', ', array_fill(0, count($table->getTableMetaData()->getColumns()), '?'));

$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})
";
$columnCount = count($table->getTableMetaData()->getColumns());

return $query;
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;
}
}

protected function buildOperationArguments(PHPUnit_Extensions_Database_DataSet_ITableMetaData $databaseTableMetaData, PHPUnit_Extensions_Database_DataSet_ITable $table, $row)
Expand Down
5 changes: 5 additions & 0 deletions PHPUnit/Extensions/Database/Operation/RowBased.php
Expand Up @@ -96,6 +96,11 @@ public function execute(PHPUnit_Extensions_Database_DB_IDatabaseConnection $conn
/* @var $table PHPUnit_Extensions_Database_DataSet_ITable */
$databaseTableMetaData = $databaseDataSet->getTableMetaData($table->getTableMetaData()->getTableName());
$query = $this->buildOperationQuery($databaseTableMetaData, $table, $connection);

if ($query === false && $table->getRowCount() > 0) {
throw new PHPUnit_Extensions_Database_Operation_Exception($this->operationName, '', array(), $table, "Rows requested for insert, but no columns provided!");
}

$statement = $connection->getConnection()->prepare($query);
for ($i = 0; $i < $table->getRowCount(); $i++) {
$args = $this->buildOperationArguments($databaseTableMetaData, $table, $i);
Expand Down
Expand Up @@ -174,5 +174,14 @@ public function testReplace()

$this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(dirname(__FILE__).'/../_files/XmlDataSets/ReplaceOperationResult.xml'), $this->getConnection()->createDataSet());
}

public function testInsertEmptyTable()
{
$insertOperation = new PHPUnit_Extensions_Database_Operation_Insert();

$insertOperation->execute($this->getConnection(), new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(__DIR__.'/../_files/XmlDataSets/EmptyTableInsertTest.xml'));

$this->assertDataSetsEqual(new PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet(__DIR__.'/../_files/XmlDataSets/EmptyTableInsertResult.xml'), $this->getConnection()->createDataSet());
}
}
?>
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<table1 table1_id="1" column1="foo" column2="42" column3="4.2" column4="bar" />
<table1 table1_id="2" column1="qwerty" column2="23" column3="2.3" column4="dvorak" />
<table2 table2_id="1" column5="fdyhkn" column6="64" column7="4568.64" column8="hkladfg" />
<table2 table2_id="2" column5="gfdsagfpwah" column6="464" column7="462.45" column8="hsafd;jhsadfyh;wafsfg gfv s,da b" />
<table3 table3_id="1" column9="hgdshhh" column10="94" column11="8745.94" column12="ghsf;ugjhgdsfyhjhkdfa" />
<table3 table3_id="2" column9="asdfgh" column10="76" column11="9413.521" column12="ghgkj;guagfghjhfd" />
<table3 table3_id="3" column9="itgewqe" column10="16" column11="1562.65" column12="jkkjhgjhgcfddfg" />
<table3 table3_id="4" column9="hoafsd" column10="54563" column11="14.54" column12="hsda8oh hklsdgsd hiisvinv mdsav;;" />
</dataset>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<table1/>
<table2 table2_id="2" column5="gfdsagfpwah" column6="464" column7="462.45" column8="hsafd;jhsadfyh;wafsfg gfv s,da b" />
<table3 table3_id="4" column9="hoafsd" column10="54563" column11="14.54" column12="hsda8oh hklsdgsd hiisvinv mdsav;;" />
</dataset>

0 comments on commit e8ed23f

Please sign in to comment.