Skip to content

Commit d607e69

Browse files
author
Malte Riesch
committed
It was not possible to have different setups with the same table in the same PSV.
[address] address_id |company 10 |foo1 [address|mode:append] address_id |company 20 |foo2
1 parent 486c4c3 commit d607e69

File tree

7 files changed

+60
-22
lines changed

7 files changed

+60
-22
lines changed

lib/TestDbAcle/Commands/FilterArrayByPsvCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public function execute()
3131

3232
$filteredParsedTree = $this->filterQueue->filterDataTree($parsedTree);
3333

34-
$expectedData = $filteredParsedTree->getTable('default')->toArray();
34+
$expectedData = $filteredParsedTree->getTable(0)->toArray();
3535

3636
if (count($expectedData) == 0){
3737
$this->expectedData = $expectedData;

lib/TestDbAcle/Commands/FilterTableStateByPsvCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public function execute()
6161

6262
$filteredParsedTree = $this->filterQueue->filterDataTree($parsedTree);
6363

64-
$this->tableFactory->populateTableList(array_keys($filteredParsedTree->getTables()),$this->tableList);
64+
$this->tableFactory->populateTableList($filteredParsedTree->getTableNames(),$this->tableList);
6565

6666
foreach($filteredParsedTree->getTables() as $table){
6767
/** @var Table $table */

lib/TestDbAcle/Commands/SetupTablesCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function __construct($sourcePsv, $placeHolders = array())
5050
public function execute()
5151
{
5252
$parsedTree = $this->parser->parsePsvTree($this->sourcePsv);
53-
$this->tableFactory->populateTableList(array_keys($parsedTree->getTables()),$this->tableList);
53+
$this->tableFactory->populateTableList($parsedTree->getTableNames(),$this->tableList);
5454
$this->dataInserter->process($this->filterQueue->filterDataTree($parsedTree));
5555
}
5656

lib/TestDbAcle/Psv/PsvTree.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ function __construct(array $tables = array())
1515

1616
function addTable(\TestDbAcle\Psv\Table\Table $table)
1717
{
18-
return $this->tables[$table->getName()] = $table;
18+
return $this->tables[] = $table;
1919
}
2020

2121

22-
function getTable($name)
22+
function getTable($index)
2323
{
24-
return $this->tables[$name];
24+
return $this->tables[$index];
2525
}
2626

2727
function getTables()
@@ -32,14 +32,23 @@ function getTables()
3232
function toArray()
3333
{
3434
$out = array();
35-
foreach ($this->getTableNames() as $table) {
36-
$out[$table] = $this->getTable($table)->toArray();
35+
foreach ($this->getTableIndexes() as $table) {
36+
$out[$this->getTable($table)->getName()] = $this->getTable($table)->toArray();
3737
}
3838
return $out;
3939
}
4040

41-
function getTableNames()
41+
function getTableIndexes()
4242
{
4343
return array_keys($this->tables);
4444
}
45+
46+
function getTableNames()
47+
{
48+
$out = array();
49+
foreach ($this->getTableIndexes() as $table) {
50+
$out[] = $this->getTable($table)->getName();
51+
}
52+
return $out;
53+
}
4554
}

tests/Functional/tests/Php5_3/SmokeTest.php

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ function test_assertArrayContainsPsv()
619619
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::FilterArrayByPsvCommand()
620620
* @covers \TestDbAcle::getDefaultFactories()
621621
*/
622-
function test_StandradDefaults()
622+
function test_StandardDefaults()
623623
{
624624

625625
$this->getPdo()->query('CREATE TEMPORARY TABLE `time_stuff` (
@@ -643,6 +643,33 @@ function test_StandradDefaults()
643643
",array('NOW'=>date("Y-m-d")));
644644
}
645645

646+
/**
647+
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::execute()
648+
* @covers \TestDbAcle\Commands\FilterTableStateByPsvCommand::FilterArrayByPsvCommand()
649+
* @covers \TestDbAcle::getDefaultFactories()
650+
*/
651+
function test_CanHaveConsecutiveTablesWithSameNameAndAppend()
652+
{
653+
$this->setupTables("
654+
[address]
655+
address_id |company
656+
10 |foo1
657+
658+
[address|mode:append]
659+
address_id |company
660+
20 |foo2
661+
662+
");
663+
664+
$this->assertTableStateContains("
665+
[address|mode:append]
666+
address_id |company
667+
10 |foo1
668+
20 |foo2
669+
670+
");
671+
}
672+
646673

647674
}
648675

tests/TestDbAcle/Filter/FilterQueueTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,12 @@ function test_filterDataTree_withOneRowFilter()
5858
$this->assertEquals( array(
5959
array('user.filtered_filter1_row1'),
6060
array('user.filtered_filter1_row2')
61-
), $filteredTableList->getTable('user')->toArray());
61+
), $filteredTableList->getTable(0)->toArray());
6262

6363
$this->assertEquals( array(
6464
array('stuff.filtered_filter1_row1'),
65-
array('stuff.filtered_filter1_row2')), $filteredTableList->getTable('stuff')->toArray());
66-
$this->assertEquals( array(), $filteredTableList->getTable('emptyTable')->toArray());
65+
array('stuff.filtered_filter1_row2')), $filteredTableList->getTable(1)->toArray());
66+
$this->assertEquals( array(), $filteredTableList->getTable(2)->toArray());
6767

6868
}
6969

@@ -124,12 +124,12 @@ function test_filterDataTree_withTwoRowFilters()
124124
$this->assertEquals( array(
125125
array('user.filtered_filter2_row1'),
126126
array('user.filtered_filter2_row2')
127-
), $filteredTableList->getTable('user')->toArray());
127+
), $filteredTableList->getTable(0)->toArray());
128128

129129
$this->assertEquals( array(
130130
array('stuff.filtered_filter2_row1'),
131-
array('stuff.filtered_filter2_row2')), $filteredTableList->getTable('stuff')->toArray());
132-
$this->assertEquals( array(), $filteredTableList->getTable('emptyTable')->toArray());
131+
array('stuff.filtered_filter2_row2')), $filteredTableList->getTable(1)->toArray());
132+
$this->assertEquals( array(), $filteredTableList->getTable(2)->toArray());
133133

134134

135135
}

tests/TestDbAcle/Psv/PsvParserTest.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,11 @@ function test_parsePsvTree() {
166166
"first_name" => "stu",
167167
"last_name" => 'Smith"'),
168168
),
169-
$parsedTree->getTable('expression1')->toArray());
169+
$parsedTree->getTable(0)->toArray());
170170

171-
$this->assertEquals('expression1', $parsedTree->getTable('expression1')->getName());
171+
$this->assertEquals('expression1', $parsedTree->getTable(0)->getName());
172172

173-
$this->assertEquals('expression2', $parsedTree->getTable('expression2')->getName());
173+
$this->assertEquals('expression2', $parsedTree->getTable(1)->getName());
174174

175175
$this->assertEquals(
176176
array(
@@ -180,13 +180,13 @@ function test_parsePsvTree() {
180180
array("col1" => "30",
181181
"col2" => "miaow",
182182
"col3" => "boo")),
183-
$parsedTree->getTable('expression2')->toArray());
183+
$parsedTree->getTable(1)->toArray());
184184

185185
$this->assertEquals(array(
186186
'mode'=> 'replace',
187-
'identifiedBy' => array('first_name','last_name') ), $parsedTree->getTable('expression1')->getMeta()->toArray());
187+
'identifiedBy' => array('first_name','last_name') ), $parsedTree->getTable(0)->getMeta()->toArray());
188188

189-
$this->assertEquals(array(), $parsedTree->getTable('expression2')->getMeta()->toArray());
189+
$this->assertEquals(array(), $parsedTree->getTable(1)->getMeta()->toArray());
190190

191191
$this->assertEquals(array (
192192
'expression1' =>
@@ -224,8 +224,10 @@ function test_parsePsvTree() {
224224
),
225225
), $parsedTree->toArray());
226226

227+
$this->assertEquals(array(0, 1, 2), $parsedTree->getTableIndexes());
227228
$this->assertEquals(array('expression1','expression2','empty'), $parsedTree->getTableNames());
228229

230+
229231
}
230232

231233

0 commit comments

Comments
 (0)