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