public function testVisitTable() { $writer = new HTMLWriter(); $id = "t" . (string) rand(); $classes = [(string) rand(), (string) rand()]; $data = ['d' . (string) rand() => (string) rand(), 'd' . (string) rand() => (string) rand()]; $requestURI = (string) rand(); $field1 = new Field([], [], "text", "Text Field Label", (string) rand()); $field1Name = "TextField1"; $row1 = RowBuilder::begin()->addWritable($field1, $field1Name)->setColumnLabel($field1Name, $field1->getLabel())->build(); $field2 = new Field([], [], "text", "Text Field Label", (string) rand()); $field2Name = "TextField2"; $row2 = RowBuilder::begin()->addWritable($field2, $field2Name)->build(); $table = TableBuilder::begin()->setId($id)->addClass($classes[0])->addClass($classes[1])->addData(array_keys($data)[0], array_values($data)[0])->addData(array_keys($data)[1], array_values($data)[1])->addRow($row1)->addRow($row2)->build(); $_SERVER["REQUEST_URI"] = $requestURI; // Get result and strip quotes, for easier analysis $result = $this->stripQuotes($writer->visitTable($table)); $row1Written = $this->stripQuotes($writer->visitRow($row1)); $row2Written = $this->stripQuotes($writer->visitRow($row2)); $this->assertContains("id={$id} class=table-container", $result); $this->assertContains("class=table-container " . implode(" ", $classes), $result); $this->assertContains("data-" . array_keys($data)[0] . "=" . array_values($data)[0], $result); $this->assertContains("data-" . array_keys($data)[1] . "=" . array_values($data)[1], $result); $this->assertContains("data-request-uri={$requestURI}", $result); $this->assertContains("</table>", $result); $this->assertContains("<th data-header-for={$field1Name}>{$field1->getLabel()}</th>", $result); $this->assertContains($row1Written, $result); $this->assertContains($row2Written, $result); }