table = new DataTable\Simple(); $this->addRow(array('nb_visits' => 1, 'nb_conversions' => 5, 'revenue' => 10, 'conversion_rate' => 20)); } private function addRow($columns) { $this->table->addRow($this->buildRow($columns)); } private function buildRow($columns) { return new Row(array(Row::COLUMNS => $columns)); } public function testFilterShouldNotAppendAnythingIfNameToReplaceIsEmpty() { $columnNamesBefore = array('nb_visits', 'nb_conversions', 'revenue', 'conversion_rate'); $this->table->filter($this->filter, array('')); $this->table->filter($this->filter, array(null)); $this->table->filter($this->filter, array(false)); $columnNamesAfter = array_keys($this->table->getFirstRow()->getColumns()); $this->assertSame($columnNamesBefore, $columnNamesAfter); } public function testFilterShoulAppendGivenStringToAllColumnsIfSet() { $nameToAppend = '_new_visit'; $this->table->filter($this->filter, array($nameToAppend)); $expected = array( 'nb_visits' . $nameToAppend => 1, 'nb_conversions' . $nameToAppend => 5, 'revenue' . $nameToAppend => 10, 'conversion_rate' . $nameToAppend => 20, ); $this->assertColumnsOfRowIdEquals($expected, $rowId = 0); } public function testFilterShoulAppendGivenStringToAllColumnsOfAllRowsEvenIfTheyHaveDifferentColumns() { $this->addRow(array('nb_visits' => 49)); $nameToAppend = '_new_visit'; $this->table->filter($this->filter, array($nameToAppend)); $expectedRow1 = array( 'nb_visits' . $nameToAppend => 1, 'nb_conversions' . $nameToAppend => 5, 'revenue' . $nameToAppend => 10, 'conversion_rate' . $nameToAppend => 20, ); $expectedRow2 = array( 'nb_visits' . $nameToAppend => 49, ); $this->assertColumnsOfRowIdEquals($expectedRow1, $rowId = 0); $this->assertColumnsOfRowIdEquals($expectedRow2, $rowId = 1); } private function assertColumnsOfRowIdEquals($expectedColumns, $rowId) { $this->assertSame($expectedColumns, $this->table->getRowFromId($rowId)->getColumns()); } }