xref: /plugin/bpmnio/_test/action_plugin_bpmnio_toolbar.test.php (revision 9ff8d41c7727ff9fa896ee8f49e170f6b8272716)
1242a8e5cSJaap de Haan<?php
2*9ff8d41cSJaap de Haan
3242a8e5cSJaap de Haan/**
4242a8e5cSJaap de Haan * @group plugin_bpmnio
5242a8e5cSJaap de Haan * @group plugins
6242a8e5cSJaap de Haan */
7*9ff8d41cSJaap de Haanclass action_plugin_bpmnio_toolbar_test extends DokuWikiTest
8*9ff8d41cSJaap de Haan{
9242a8e5cSJaap de Haan    protected $pluginsEnabled = array('bpmnio');
10242a8e5cSJaap de Haan
11242a8e5cSJaap de Haan    /**
12242a8e5cSJaap de Haan     * Test that the toolbar plugin can be loaded
13242a8e5cSJaap de Haan     */
14*9ff8d41cSJaap de Haan    public function test_plugin_load()
15*9ff8d41cSJaap de Haan    {
16242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
17242a8e5cSJaap de Haan        $this->assertNotNull($plugin, 'Toolbar action plugin should be loadable');
18242a8e5cSJaap de Haan    }
19242a8e5cSJaap de Haan
20242a8e5cSJaap de Haan    /**
21242a8e5cSJaap de Haan     * Test that the toolbar handler adds the picker to event data
22242a8e5cSJaap de Haan     */
23*9ff8d41cSJaap de Haan    public function test_toolbar_handler_adds_picker()
24*9ff8d41cSJaap de Haan    {
25242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
26242a8e5cSJaap de Haan
27242a8e5cSJaap de Haan        $data = [];
28242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
29242a8e5cSJaap de Haan
30242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
31242a8e5cSJaap de Haan
32242a8e5cSJaap de Haan        $this->assertCount(1, $data, 'Should add one toolbar entry');
33242a8e5cSJaap de Haan        $picker = $data[0];
34242a8e5cSJaap de Haan        $this->assertEquals('picker', $picker['type']);
35242a8e5cSJaap de Haan        $this->assertArrayHasKey('list', $picker);
36242a8e5cSJaap de Haan        $this->assertCount(2, $picker['list'], 'Picker should have BPMN and DMN entries');
37242a8e5cSJaap de Haan
38242a8e5cSJaap de Haan        // Check BPMN entry
39242a8e5cSJaap de Haan        $bpmn = $picker['list'][0];
40242a8e5cSJaap de Haan        $this->assertEquals('format', $bpmn['type']);
41242a8e5cSJaap de Haan        $this->assertNotEmpty($bpmn['open'], 'BPMN open template should not be empty');
42242a8e5cSJaap de Haan        $this->assertNotEmpty($bpmn['close'], 'BPMN close template should not be empty');
43242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio', $bpmn['open']);
44242a8e5cSJaap de Haan
45242a8e5cSJaap de Haan        // Check DMN entry
46242a8e5cSJaap de Haan        $dmn = $picker['list'][1];
47242a8e5cSJaap de Haan        $this->assertEquals('format', $dmn['type']);
48242a8e5cSJaap de Haan        $this->assertNotEmpty($dmn['open'], 'DMN open template should not be empty');
49242a8e5cSJaap de Haan        $this->assertNotEmpty($dmn['close'], 'DMN close template should not be empty');
50242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio', $dmn['open']);
51242a8e5cSJaap de Haan    }
52242a8e5cSJaap de Haan
53242a8e5cSJaap de Haan    /**
54242a8e5cSJaap de Haan     * Test that toolbar icons reference the correct directory
55242a8e5cSJaap de Haan     */
56*9ff8d41cSJaap de Haan    public function test_toolbar_icon_paths()
57*9ff8d41cSJaap de Haan    {
58242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
59242a8e5cSJaap de Haan
60242a8e5cSJaap de Haan        $data = [];
61242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
62242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
63242a8e5cSJaap de Haan
64242a8e5cSJaap de Haan        $picker = $data[0];
65242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio/images/toolbar/', $picker['icon']);
66242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio/images/toolbar/', $picker['list'][0]['icon']);
67242a8e5cSJaap de Haan        $this->assertStringContainsString('bpmnio/images/toolbar/', $picker['list'][1]['icon']);
68242a8e5cSJaap de Haan    }
69242a8e5cSJaap de Haan
70242a8e5cSJaap de Haan    /**
71242a8e5cSJaap de Haan     * Test that BPMN template contains valid XML structure
72242a8e5cSJaap de Haan     */
73*9ff8d41cSJaap de Haan    public function test_bpmn_template_content()
74*9ff8d41cSJaap de Haan    {
75242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
76242a8e5cSJaap de Haan
77242a8e5cSJaap de Haan        $data = [];
78242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
79242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
80242a8e5cSJaap de Haan
81242a8e5cSJaap de Haan        $bpmn_open = $data[0]['list'][0]['open'];
82242a8e5cSJaap de Haan        $bpmn_close = $data[0]['list'][0]['close'];
83242a8e5cSJaap de Haan
84242a8e5cSJaap de Haan        $this->assertStringContainsString('<bpmnio type="bpmn">', $bpmn_open);
85242a8e5cSJaap de Haan        $this->assertStringContainsString('</bpmnio>', $bpmn_close);
86242a8e5cSJaap de Haan    }
87242a8e5cSJaap de Haan
88242a8e5cSJaap de Haan    /**
89242a8e5cSJaap de Haan     * Test that DMN template contains valid XML structure
90242a8e5cSJaap de Haan     */
91*9ff8d41cSJaap de Haan    public function test_dmn_template_content()
92*9ff8d41cSJaap de Haan    {
93242a8e5cSJaap de Haan        $plugin = plugin_load('action', 'bpmnio_toolbar');
94242a8e5cSJaap de Haan
95242a8e5cSJaap de Haan        $data = [];
96242a8e5cSJaap de Haan        $event = new \dokuwiki\Extension\Event('TOOLBAR_DEFINE', $data);
97242a8e5cSJaap de Haan        $plugin->handleToolbar($event);
98242a8e5cSJaap de Haan
99242a8e5cSJaap de Haan        $dmn_open = $data[0]['list'][1]['open'];
100242a8e5cSJaap de Haan        $dmn_close = $data[0]['list'][1]['close'];
101242a8e5cSJaap de Haan
102242a8e5cSJaap de Haan        $this->assertStringContainsString('<bpmnio type="dmn">', $dmn_open);
103242a8e5cSJaap de Haan        $this->assertStringContainsString('</bpmnio>', $dmn_close);
104242a8e5cSJaap de Haan    }
105242a8e5cSJaap de Haan}
106