loadSchemaJSON('schema1'); } public function test_importExistingPageCSV() { $csvImporter = new mock\CSVPageImporter('schema1', '', 'page'); $csvImporter->setTestData([ ['pid', 'first', 'second', 'third', 'fourth'], ['wiki:syntax', 'e', 'f,i', 'g', 'h'], ]); $assignment = mock\Assignments::getInstance(); $assignment->addPattern('wiki:syntax', 'schema1'); $csvImporter->import(); $schemaData = mock\AccessTable::getPageAccess('schema1', 'wiki:syntax'); $actual_data = $schemaData->getDataFromDB(); $expected_data = array( array( 'PID' => 'wiki:syntax', 'out1' => 'e', 'out2' => 'f' . Search::CONCAT_SEPARATOR . 'i', 'out3' => 'g', 'out4' => 'h', ), ); $this->assertSame($expected_data, $actual_data); } /** * Unknown header should be discarded/ignored */ public function test_importNewPageCSV() { // arrange global $INPUT; $INPUT->set('createPage', true); $pageID = 'new:page'; $csvImporter = new mock\CSVPageImporter('schema1', '', 'page'); $csvImporter->setTestData([ ['pid', 'first', 'third', 'second', 'fourth', 'fifth'], [$pageID, 'a', 'c', 'b,e', 'd',], ]); $templateFN = substr(wikiFN($pageID), 0, -1 * strlen('page.txt')) . '_template.txt'; io_makeFileDir($templateFN); file_put_contents($templateFN, '====== @PAGE@ ====== first: @@schema1.first@@ second: ##schema1.second## fifth: @@fifth@@ '); // act $assignment = mock\Assignments::getInstance(); $assignment->addPattern($pageID, 'schema1'); $csvImporter->import(); // assert $schemaData = mock\AccessTable::getPageAccess('schema1', $pageID); $actual_data = $schemaData->getDataFromDB(); $expected_data = array( array( 'PID' => $pageID, 'out1' => 'a', 'out2' => 'b' . Search::CONCAT_SEPARATOR . 'e', 'out3' => 'c', 'out4' => 'd', ), ); $this->assertSame($expected_data, $actual_data); $this->assertTrue(page_exists($pageID)); $expectedText = '====== page ====== first: a second: b, e '; $text = file_get_contents(wikiFN($pageID)); $this->assertSame($expectedText, $text); } }