1242a8e5cSJaap de Haan<?php 29ff8d41cSJaap de Haan 3242a8e5cSJaap de Haan/** 4242a8e5cSJaap de Haan * @group plugin_bpmnio 5242a8e5cSJaap de Haan * @group plugins 6242a8e5cSJaap de Haan */ 7*61596a8fSJaap de Haanclass action_plugin_bpmnio_editor_test_form 8*61596a8fSJaap de Haan{ 9*61596a8fSJaap de Haan public array $hiddenFields = []; 10*61596a8fSJaap de Haan public string $html = ''; 11*61596a8fSJaap de Haan 12*61596a8fSJaap de Haan public function setHiddenField($name, $value) 13*61596a8fSJaap de Haan { 14*61596a8fSJaap de Haan $this->hiddenFields[$name] = $value; 15*61596a8fSJaap de Haan } 16*61596a8fSJaap de Haan 17*61596a8fSJaap de Haan public function addHTML($html) 18*61596a8fSJaap de Haan { 19*61596a8fSJaap de Haan $this->html .= $html; 20*61596a8fSJaap de Haan } 21*61596a8fSJaap de Haan} 22*61596a8fSJaap de Haan 239ff8d41cSJaap de Haanclass action_plugin_bpmnio_editor_test extends DokuWikiTest 249ff8d41cSJaap de Haan{ 25242a8e5cSJaap de Haan protected $pluginsEnabled = array('bpmnio'); 26242a8e5cSJaap de Haan 27242a8e5cSJaap de Haan /** 28242a8e5cSJaap de Haan * Test that the editor plugin can be loaded 29242a8e5cSJaap de Haan */ 309ff8d41cSJaap de Haan public function test_plugin_load() 319ff8d41cSJaap de Haan { 32242a8e5cSJaap de Haan $plugin = plugin_load('action', 'bpmnio_editor'); 33242a8e5cSJaap de Haan $this->assertNotNull($plugin, 'Editor action plugin should be loadable'); 34242a8e5cSJaap de Haan } 35242a8e5cSJaap de Haan 36242a8e5cSJaap de Haan /** 37242a8e5cSJaap de Haan * Test section edit button for BPMN target 38242a8e5cSJaap de Haan */ 399ff8d41cSJaap de Haan public function test_section_edit_button_bpmn() 409ff8d41cSJaap de Haan { 41242a8e5cSJaap de Haan $plugin = plugin_load('action', 'bpmnio_editor'); 42242a8e5cSJaap de Haan 43242a8e5cSJaap de Haan $data = ['target' => 'plugin_bpmnio_bpmn', 'name' => '']; 44242a8e5cSJaap de Haan $event = new \dokuwiki\Extension\Event('HTML_SECEDIT_BUTTON', $data); 45242a8e5cSJaap de Haan 46242a8e5cSJaap de Haan $plugin->sectionEditButton($event); 47242a8e5cSJaap de Haan 48242a8e5cSJaap de Haan $this->assertNotEmpty($data['name'], 'Button name should be set for BPMN target'); 49242a8e5cSJaap de Haan } 50242a8e5cSJaap de Haan 51242a8e5cSJaap de Haan /** 52242a8e5cSJaap de Haan * Test section edit button for DMN target 53242a8e5cSJaap de Haan */ 549ff8d41cSJaap de Haan public function test_section_edit_button_dmn() 559ff8d41cSJaap de Haan { 56242a8e5cSJaap de Haan $plugin = plugin_load('action', 'bpmnio_editor'); 57242a8e5cSJaap de Haan 58242a8e5cSJaap de Haan $data = ['target' => 'plugin_bpmnio_dmn', 'name' => '']; 59242a8e5cSJaap de Haan $event = new \dokuwiki\Extension\Event('HTML_SECEDIT_BUTTON', $data); 60242a8e5cSJaap de Haan 61242a8e5cSJaap de Haan $plugin->sectionEditButton($event); 62242a8e5cSJaap de Haan 63242a8e5cSJaap de Haan $this->assertNotEmpty($data['name'], 'Button name should be set for DMN target'); 64242a8e5cSJaap de Haan } 65242a8e5cSJaap de Haan 66242a8e5cSJaap de Haan /** 67242a8e5cSJaap de Haan * Test section edit button ignores non-bpmnio targets 68242a8e5cSJaap de Haan */ 699ff8d41cSJaap de Haan public function test_section_edit_button_ignores_other() 709ff8d41cSJaap de Haan { 71242a8e5cSJaap de Haan $plugin = plugin_load('action', 'bpmnio_editor'); 72242a8e5cSJaap de Haan 73242a8e5cSJaap de Haan $data = ['target' => 'section', 'name' => '']; 74242a8e5cSJaap de Haan $event = new \dokuwiki\Extension\Event('HTML_SECEDIT_BUTTON', $data); 75242a8e5cSJaap de Haan 76242a8e5cSJaap de Haan $plugin->sectionEditButton($event); 77242a8e5cSJaap de Haan 78242a8e5cSJaap de Haan $this->assertEmpty($data['name'], 'Button name should not be set for non-bpmnio targets'); 79242a8e5cSJaap de Haan } 80242a8e5cSJaap de Haan 81242a8e5cSJaap de Haan /** 82242a8e5cSJaap de Haan * Test handlePost does nothing when plugin data not in POST 83242a8e5cSJaap de Haan */ 849ff8d41cSJaap de Haan public function test_handle_post_noop_without_data() 859ff8d41cSJaap de Haan { 86242a8e5cSJaap de Haan $plugin = plugin_load('action', 'bpmnio_editor'); 87242a8e5cSJaap de Haan 88242a8e5cSJaap de Haan global $TEXT; 89242a8e5cSJaap de Haan $TEXT = 'original'; 90242a8e5cSJaap de Haan global $INPUT; 91242a8e5cSJaap de Haan 92242a8e5cSJaap de Haan $data = 'edit'; 93242a8e5cSJaap de Haan $event = new \dokuwiki\Extension\Event('ACTION_ACT_PREPROCESS', $data); 94242a8e5cSJaap de Haan 95242a8e5cSJaap de Haan $plugin->handlePost($event); 96242a8e5cSJaap de Haan 97242a8e5cSJaap de Haan $this->assertEquals('original', $TEXT, '$TEXT should not change when plugin data is not posted'); 98242a8e5cSJaap de Haan } 99*61596a8fSJaap de Haan 100*61596a8fSJaap de Haan public function test_handle_form_generates_balanced_editor_markup() 101*61596a8fSJaap de Haan { 102*61596a8fSJaap de Haan $plugin = plugin_load('action', 'bpmnio_editor'); 103*61596a8fSJaap de Haan 104*61596a8fSJaap de Haan global $TEXT; 105*61596a8fSJaap de Haan global $RANGE; 106*61596a8fSJaap de Haan 107*61596a8fSJaap de Haan $TEXT = '<xml />'; 108*61596a8fSJaap de Haan $RANGE = '1-2'; 109*61596a8fSJaap de Haan 110*61596a8fSJaap de Haan $form = new action_plugin_bpmnio_editor_test_form(); 111*61596a8fSJaap de Haan $data = [ 112*61596a8fSJaap de Haan 'target' => 'plugin_bpmnio_bpmn', 113*61596a8fSJaap de Haan 'form' => $form, 114*61596a8fSJaap de Haan ]; 115*61596a8fSJaap de Haan $event = new \dokuwiki\Extension\Event('EDIT_FORM_ADDTEXTAREA', $data); 116*61596a8fSJaap de Haan 117*61596a8fSJaap de Haan $plugin->handleForm($event); 118*61596a8fSJaap de Haan 119*61596a8fSJaap de Haan $this->assertArrayHasKey('plugin_bpmnio_data', $form->hiddenFields); 120*61596a8fSJaap de Haan $this->assertStringContainsString('id="plugin_bpmnio__bpmn_editor"', $form->html); 121*61596a8fSJaap de Haan $this->assertStringContainsString('<div class="bpmn_js_canvas">', $form->html); 122*61596a8fSJaap de Haan $this->assertSame(4, substr_count($form->html, '<div')); 123*61596a8fSJaap de Haan $this->assertSame(4, substr_count($form->html, '</div>')); 124*61596a8fSJaap de Haan } 125242a8e5cSJaap de Haan} 126