xref: /plugin/bpmnio/_test/action_plugin_bpmnio_editor.test.php (revision 242a8e5c8fdb14becaae50d3af24fc80cf14b6f4)
1*242a8e5cSJaap de Haan<?php
2*242a8e5cSJaap de Haan/**
3*242a8e5cSJaap de Haan * @group plugin_bpmnio
4*242a8e5cSJaap de Haan * @group plugins
5*242a8e5cSJaap de Haan */
6*242a8e5cSJaap de Haanclass action_plugin_bpmnio_editor_test extends DokuWikiTest {
7*242a8e5cSJaap de Haan
8*242a8e5cSJaap de Haan    protected $pluginsEnabled = array('bpmnio');
9*242a8e5cSJaap de Haan
10*242a8e5cSJaap de Haan    /**
11*242a8e5cSJaap de Haan     * Test that the editor plugin can be loaded
12*242a8e5cSJaap de Haan     */
13*242a8e5cSJaap de Haan    public function test_plugin_load() {
14*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_editor');
15*242a8e5cSJaap de Haan        $this->assertNotNull($plugin, 'Editor action plugin should be loadable');
16*242a8e5cSJaap de Haan    }
17*242a8e5cSJaap de Haan
18*242a8e5cSJaap de Haan    /**
19*242a8e5cSJaap de Haan     * Test section edit button for BPMN target
20*242a8e5cSJaap de Haan     */
21*242a8e5cSJaap de Haan    public function test_section_edit_button_bpmn() {
22*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_editor');
23*242a8e5cSJaap de Haan
24*242a8e5cSJaap de Haan        $data = ['target' => 'plugin_bpmnio_bpmn', 'name' => ''];
25*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('HTML_SECEDIT_BUTTON', $data);
26*242a8e5cSJaap de Haan
27*242a8e5cSJaap de Haan        $plugin->sectionEditButton($event);
28*242a8e5cSJaap de Haan
29*242a8e5cSJaap de Haan        $this->assertNotEmpty($data['name'], 'Button name should be set for BPMN target');
30*242a8e5cSJaap de Haan    }
31*242a8e5cSJaap de Haan
32*242a8e5cSJaap de Haan    /**
33*242a8e5cSJaap de Haan     * Test section edit button for DMN target
34*242a8e5cSJaap de Haan     */
35*242a8e5cSJaap de Haan    public function test_section_edit_button_dmn() {
36*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_editor');
37*242a8e5cSJaap de Haan
38*242a8e5cSJaap de Haan        $data = ['target' => 'plugin_bpmnio_dmn', 'name' => ''];
39*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('HTML_SECEDIT_BUTTON', $data);
40*242a8e5cSJaap de Haan
41*242a8e5cSJaap de Haan        $plugin->sectionEditButton($event);
42*242a8e5cSJaap de Haan
43*242a8e5cSJaap de Haan        $this->assertNotEmpty($data['name'], 'Button name should be set for DMN target');
44*242a8e5cSJaap de Haan    }
45*242a8e5cSJaap de Haan
46*242a8e5cSJaap de Haan    /**
47*242a8e5cSJaap de Haan     * Test section edit button ignores non-bpmnio targets
48*242a8e5cSJaap de Haan     */
49*242a8e5cSJaap de Haan    public function test_section_edit_button_ignores_other() {
50*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_editor');
51*242a8e5cSJaap de Haan
52*242a8e5cSJaap de Haan        $data = ['target' => 'section', 'name' => ''];
53*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('HTML_SECEDIT_BUTTON', $data);
54*242a8e5cSJaap de Haan
55*242a8e5cSJaap de Haan        $plugin->sectionEditButton($event);
56*242a8e5cSJaap de Haan
57*242a8e5cSJaap de Haan        $this->assertEmpty($data['name'], 'Button name should not be set for non-bpmnio targets');
58*242a8e5cSJaap de Haan    }
59*242a8e5cSJaap de Haan
60*242a8e5cSJaap de Haan    /**
61*242a8e5cSJaap de Haan     * Test handlePost does nothing when plugin data not in POST
62*242a8e5cSJaap de Haan     */
63*242a8e5cSJaap de Haan    public function test_handle_post_noop_without_data() {
64*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_editor');
65*242a8e5cSJaap de Haan
66*242a8e5cSJaap de Haan        global $TEXT;
67*242a8e5cSJaap de Haan        $TEXT = 'original';
68*242a8e5cSJaap de Haan        global $INPUT;
69*242a8e5cSJaap de Haan
70*242a8e5cSJaap de Haan        $data = 'edit';
71*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('ACTION_ACT_PREPROCESS', $data);
72*242a8e5cSJaap de Haan
73*242a8e5cSJaap de Haan        $plugin->handlePost($event);
74*242a8e5cSJaap de Haan
75*242a8e5cSJaap de Haan        $this->assertEquals('original', $TEXT, '$TEXT should not change when plugin data is not posted');
76*242a8e5cSJaap de Haan    }
77*242a8e5cSJaap de Haan}
78