markTestSkipped('bureaucracy plugin not available'); } $this->loadSchemaJSON('bureaucracy_lookup'); $this->loadSchemaJSON('bureaucracy'); //insert some data to lookup for ($i = 1; $i <= 10; ++$i) { $data = [ 'lookup_first' => 'value first ' . $i, 'lookup_second' => 'value second ' . $i ]; $lookupData = AccessTable::getGlobalAccess('bureaucracy_lookup'); $lookupData->saveData($data); $this->lookup[] = $lookupData; } } public function test_bureaucracy_lookup_replacement_empty() { //page created by bureaucracy $id = 'bureaucracy_lookup_replacement_empty'; //id of template page $template_id = 'template'; //create template saveWikiText($template_id, 'Value:@@bureaucracy.lookup_select@@', 'summary'); //build form $fields = []; /** @var \helper_plugin_struct_field $lookup_field */ $lookup_field = plugin_load('helper', 'struct_field'); $lookup_field->opt['cmd'] = ''; $lookup_field->opt['label'] = 'bureaucracy.lookup_select'; $lookup_field->initialize([$lookup_field->opt['cmd'], $lookup_field->opt['label']]); //empty lookup value $lookup_field->opt['value'] = json_encode([]); $fields[] = $lookup_field; /** @var \helper_plugin_bureaucracy_actiontemplate $actiontemplate */ $actiontemplate = plugin_load('helper', 'bureaucracy_actiontemplate'); $actiontemplate->run($fields, '', array($template_id, $id, '_')); $page_content = io_readWikiPage(wikiFN($id), $id); $this->assertEquals('Value:', $page_content); } public function test_bureaucracy_lookup_replacement() { //page created by bureaucracy $id = 'bureaucracy_lookup_replacement'; //id of template page $template_id = 'template'; //rid of selected value $lookup_rid = $this->lookup[0]->getRid(); //selected value $lookup_value = $this->lookup[0]->getData()['lookup_first']->getValue(); //create template saveWikiText($template_id, 'Value:@@bureaucracy.lookup_select@@', 'summary'); //build form $fields = array(); $lookup_field = plugin_load('helper', 'struct_field'); $lookup_field->opt['cmd'] = ''; $lookup_field->opt['label'] = 'bureaucracy.lookup_select'; $lookup_field->initialize([$lookup_field->opt['cmd'], $lookup_field->opt['label']]); $lookup_field->opt['value'] = json_encode(['', $lookup_rid]); $fields[] = $lookup_field; /* @var \helper_plugin_bureaucracy_actiontemplate $actiontemplate */ $actiontemplate = plugin_load('helper', 'bureaucracy_actiontemplate'); $actiontemplate->run($fields, '', array($template_id, $id, '_')); $page_content = io_readWikiPage(wikiFN($id), $id); $this->assertEquals('Value:' . $lookup_value, $page_content); } public function test_bureaucracy_multi_field() { $this->loadSchemaJSON('schema1'); $formSyntax = [ 'struct_field "schema1.first"', 'struct_field "schema1.second"', ]; $templateSyntax = "staticPrefix @@schema1.first@@ staticPostfix\nmulti: @@schema1.second@@ multipost"; $values = ['foo', ['bar', 'baz']]; $errors = []; $bTest = new \dokuwiki\plugin\bureaucracy\test\BureaucracyTest(); $actualWikitext = $this->callInaccessibleMethod( $bTest, 'send_form_action_template', array_merge( [ $formSyntax, $templateSyntax, &$errors ], $values ) ); $expectedSyntax = "staticPrefix foo staticPostfix\nmulti: bar, baz multipost"; $this->assertEquals($expectedSyntax, $actualWikitext); $this->assertEmpty($errors); } }