Skip to content

Commit 486c4c3

Browse files
author
Malte Riesch
committed
letting database handle default values that are not specified
1 parent b5d829e commit 486c4c3

File tree

3 files changed

+72
-7
lines changed

3 files changed

+72
-7
lines changed

lib/TestDbAcle/Filter/AddDefaultValuesRowFilter.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ public function filter($tableName, array $row)
1818
$table = $this->tableList->getTable($tableName);
1919
foreach ($table->getNonNullableColumns() as $columnName) {
2020
$column = $table->getColumn($columnName);
21-
if (($default = $column->getDefault()) && $this->isRedefineable($row,$columnName)){
22-
$row[$columnName] = $default;
23-
} elseif ($this->isUndefined($row, $columnName) && !$column->isAutoIncrement()) {
21+
if($column->getDefault()){continue;}
22+
if ($this->isUndefined($row, $columnName) && !$column->isAutoIncrement()) {
2423
$row[$columnName] = $column->generateDefaultNullValue();
2524
}
2625
}

tests/Functional/tests/Php5_3/SmokeTest.php

Lines changed: 68 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,44 @@ function test_Setup_Bug_ReplaceModeOverwritesNonNullColumns()
283283
");
284284
}
285285

286+
/**
287+
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::execute()
288+
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::FilterTableStateByPsvCommand() with placeholders
289+
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::SetAutoIncrementCommand()
290+
* @covers \TestDbAcle::getDefaultFactories()
291+
*
292+
* @link https://github.com/malteriesch/test-db-acle/issues/10
293+
*/
294+
295+
function test_Setup_Bug_2()
296+
{
297+
298+
$this->setupTables("
299+
[address]
300+
address_id |address2 |postcode
301+
1 |val 1 |foo1
302+
3 |val 2 |foo2
303+
1000 |val3 |foo3
304+
305+
");
306+
307+
$this->setupTables("
308+
[address|mode:replace;identifiedBy:address_id]
309+
address_id |address1
310+
3 |val 2 amended
311+
");
312+
313+
$this->assertTableStateContains("
314+
[address]
315+
address_id |address2 |postcode
316+
1 |val 1 |foo1
317+
3 |val 2 |foo2
318+
1000 |val3 |foo3
319+
320+
");
321+
}
322+
323+
286324
/**
287325
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::execute()
288326
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::FilterTableStateByPsvCommand() with placeholders
@@ -576,7 +614,36 @@ function test_assertArrayContainsPsv()
576614

577615
}
578616

579-
617+
/**
618+
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::execute()
619+
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::FilterArrayByPsvCommand()
620+
* @covers \TestDbAcle::getDefaultFactories()
621+
*/
622+
function test_StandradDefaults()
623+
{
624+
625+
$this->getPdo()->query('CREATE TEMPORARY TABLE `time_stuff` (
626+
`time_stuff_id` int(11) NOT NULL AUTO_INCREMENT,
627+
`last_updated` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
628+
PRIMARY KEY (`time_stuff_id`)
629+
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8');
630+
631+
$this->setupTables("
632+
[time_stuff]
633+
time_stuff_id
634+
10
635+
636+
");
637+
638+
$this->assertTableStateContains("
639+
[time_stuff]
640+
time_stuff_id |last_updated
641+
10 |NOW
642+
643+
",array('NOW'=>date("Y-m-d")));
644+
}
645+
646+
580647
}
581648

582649
class ExampleService

tests/TestDbAcle/Filter/AddDefaultValuesRowFilterTest.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,9 @@ public function teardown() {
3737

3838
function test_filter_addsNonNullableDefaultValues()
3939
{
40-
$this->assertEquals( array('col4'=>'2012-01-01','col1'=>'1','col9'=>'foo'), $this->filter->filter("my_table", array('col9'=>'','col4'=>'2012-01-01')));
40+
$this->assertEquals( array('col4'=>'2012-01-01','col1'=>'1'), $this->filter->filter("my_table", array('col4'=>'2012-01-01')));
41+
$this->assertEquals( array('col4'=>'2012-01-01','col1'=>'1','col9'=>''), $this->filter->filter("my_table", array('col9'=>'','col4'=>'2012-01-01')));
4142
$this->assertEquals( array('col9'=>'moo','col4'=>'2012-01-01','col1'=>'1'), $this->filter->filter("my_table", array('col9'=>'moo','col4'=>'2012-01-01')));
42-
43-
4443
}
4544
}
4645

0 commit comments

Comments
 (0)