loadLinkProcessor();
io_mkdir_p(dirname(wikiFN('test:target')));
io_saveFile(wikiFN('test:target'), 'Target page');
$xml = ''
. ''
. ''
. ''
. ''
. '';
$result = plugin_bpmnio_link_processor::buildPayload($xml);
// XML was parsed successfully: wikilink markup is stripped from name
$this->assertStringNotContainsString('[[', $result['xml']);
$this->assertStringContainsString('name="Go there"', $result['xml']);
// XML declaration is preserved in output
$this->assertStringContainsString('assertArrayHasKey('Task_1', $result['links']);
$this->assertEquals('test:target', $result['links']['Task_1']['target']);
}
/**
* Empty input returns empty xml and no links without crashing.
*/
public function test_build_payload_empty_input(): void
{
$this->loadLinkProcessor();
$result = plugin_bpmnio_link_processor::buildPayload('');
$this->assertSame('', $result['xml']);
$this->assertSame([], $result['links']);
}
/**
* XML without wikilinks returns the processed XML and an empty link map.
*/
public function test_build_payload_no_links(): void
{
$this->loadLinkProcessor();
$xml = ''
. ''
. ''
. ''
. ''
. '';
$result = plugin_bpmnio_link_processor::buildPayload($xml);
$this->assertStringContainsString('Plain Task', $result['xml']);
$this->assertSame([], $result['links']);
}
/**
* Malformed XML returns the original string unchanged and no links.
*/
public function test_build_payload_malformed_xml(): void
{
$this->loadLinkProcessor();
$xml = '';
$result = plugin_bpmnio_link_processor::buildPayload($xml);
$this->assertSame($xml, $result['xml']);
$this->assertSame([], $result['links']);
}
}