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