xref: /plugin/bpmnio/_test/action_plugin_bpmnio_toolbar.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_toolbar_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 toolbar 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_toolbar');
15*242a8e5cSJaap de Haan        $this->assertNotNull($plugin, 'Toolbar action plugin should be loadable');
16*242a8e5cSJaap de Haan    }
17*242a8e5cSJaap de Haan
18*242a8e5cSJaap de Haan    /**
19*242a8e5cSJaap de Haan     * Test that the toolbar handler adds the picker to event data
20*242a8e5cSJaap de Haan     */
21*242a8e5cSJaap de Haan    public function test_toolbar_handler_adds_picker() {
22*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
23*242a8e5cSJaap de Haan
24*242a8e5cSJaap de Haan        $data = [];
25*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
26*242a8e5cSJaap de Haan
27*242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
28*242a8e5cSJaap de Haan
29*242a8e5cSJaap de Haan        $this->assertCount(1, $data, 'Should add one toolbar entry');
30*242a8e5cSJaap de Haan        $picker = $data[0];
31*242a8e5cSJaap de Haan        $this->assertEquals('picker', $picker['type']);
32*242a8e5cSJaap de Haan        $this->assertArrayHasKey('list', $picker);
33*242a8e5cSJaap de Haan        $this->assertCount(2, $picker['list'], 'Picker should have BPMN and DMN entries');
34*242a8e5cSJaap de Haan
35*242a8e5cSJaap de Haan        // Check BPMN entry
36*242a8e5cSJaap de Haan        $bpmn = $picker['list'][0];
37*242a8e5cSJaap de Haan        $this->assertEquals('format', $bpmn['type']);
38*242a8e5cSJaap de Haan        $this->assertNotEmpty($bpmn['open'], 'BPMN open template should not be empty');
39*242a8e5cSJaap de Haan        $this->assertNotEmpty($bpmn['close'], 'BPMN close template should not be empty');
40*242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio', $bpmn['open']);
41*242a8e5cSJaap de Haan
42*242a8e5cSJaap de Haan        // Check DMN entry
43*242a8e5cSJaap de Haan        $dmn = $picker['list'][1];
44*242a8e5cSJaap de Haan        $this->assertEquals('format', $dmn['type']);
45*242a8e5cSJaap de Haan        $this->assertNotEmpty($dmn['open'], 'DMN open template should not be empty');
46*242a8e5cSJaap de Haan        $this->assertNotEmpty($dmn['close'], 'DMN close template should not be empty');
47*242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio', $dmn['open']);
48*242a8e5cSJaap de Haan    }
49*242a8e5cSJaap de Haan
50*242a8e5cSJaap de Haan    /**
51*242a8e5cSJaap de Haan     * Test that toolbar icons reference the correct directory
52*242a8e5cSJaap de Haan     */
53*242a8e5cSJaap de Haan    public function test_toolbar_icon_paths() {
54*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
55*242a8e5cSJaap de Haan
56*242a8e5cSJaap de Haan        $data = [];
57*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
58*242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
59*242a8e5cSJaap de Haan
60*242a8e5cSJaap de Haan        $picker = $data[0];
61*242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio/images/toolbar/', $picker['icon']);
62*242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio/images/toolbar/', $picker['list'][0]['icon']);
63*242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio/images/toolbar/', $picker['list'][1]['icon']);
64*242a8e5cSJaap de Haan    }
65*242a8e5cSJaap de Haan
66*242a8e5cSJaap de Haan    /**
67*242a8e5cSJaap de Haan     * Test that BPMN template contains valid XML structure
68*242a8e5cSJaap de Haan     */
69*242a8e5cSJaap de Haan    public function test_bpmn_template_content() {
70*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
71*242a8e5cSJaap de Haan
72*242a8e5cSJaap de Haan        $data = [];
73*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
74*242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
75*242a8e5cSJaap de Haan
76*242a8e5cSJaap de Haan        $bpmn_open = $data[0]['list'][0]['open'];
77*242a8e5cSJaap de Haan        $bpmn_close = $data[0]['list'][0]['close'];
78*242a8e5cSJaap de Haan
79*242a8e5cSJaap de Haan        $this->assertStringContainsString('<bpmnio type="bpmn">', $bpmn_open);
80*242a8e5cSJaap de Haan        $this->assertStringContainsString('</bpmnio>', $bpmn_close);
81*242a8e5cSJaap de Haan    }
82*242a8e5cSJaap de Haan
83*242a8e5cSJaap de Haan    /**
84*242a8e5cSJaap de Haan     * Test that DMN template contains valid XML structure
85*242a8e5cSJaap de Haan     */
86*242a8e5cSJaap de Haan    public function test_dmn_template_content() {
87*242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
88*242a8e5cSJaap de Haan
89*242a8e5cSJaap de Haan        $data = [];
90*242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
91*242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
92*242a8e5cSJaap de Haan
93*242a8e5cSJaap de Haan        $dmn_open = $data[0]['list'][1]['open'];
94*242a8e5cSJaap de Haan        $dmn_close = $data[0]['list'][1]['close'];
95*242a8e5cSJaap de Haan
96*242a8e5cSJaap de Haan        $this->assertStringContainsString('<bpmnio type="dmn">', $dmn_open);
97*242a8e5cSJaap de Haan        $this->assertStringContainsString('</bpmnio>', $dmn_close);
98*242a8e5cSJaap de Haan    }
99*242a8e5cSJaap de Haan}
100