ProcessMaker-BE "Exporter (PHPUnit)"

- PHPUnit for processmaker/workflow/engine/src/ProcessMaker/Exporter/XmlExporter.php
This commit is contained in:
Victor Saisa Lopez
2014-05-09 10:47:54 -04:00
parent 67fd12e0c1
commit c2578b595d

View File

@@ -1,11 +1,8 @@
<?php
namespace Tests\ProcessMaker\Exporter;
use \ProcessMaker\Project;
use \ProcessMaker\Exporter;
if (! class_exists("Propel")) {
include_once __DIR__ . "/../../bootstrap.php";
if (!class_exists("Propel")) {
include_once(__DIR__ . "/../../bootstrap.php");
}
/**
@@ -16,10 +13,158 @@ if (! class_exists("Propel")) {
*/
class XmlExporterTest extends \PHPUnit_Framework_TestCase
{
function testExport()
protected static $exporter;
protected static $projectUid = "";
protected static $projectName = "";
protected static $fileXml = "";
/**
* Set class for test
*
* @coversNothing
*/
public static function setUpBeforeClass()
{
$exporter = new Exporter\XmlExporter("4857540205310b25f3d51a5020772457");
$exporter->build();
$exporter->saveExport("/home/erik/out.xml");
self::$projectName = \ProcessMaker\Util\Common::generateUID();
$json = "
{
\"prj_name\": \"" . self::$projectName . "\",
\"prj_author\": \"00000000000000000000000000000001\",
\"diagrams\": [
{
\"dia_uid\": \"\",
\"activities\": [],
\"events\": [],
\"gateways\": [],
\"flows\": [],
\"artifacts\": [],
\"laneset\": [],
\"lanes\": []
}
]
}
";
$arrayResult = \ProcessMaker\Project\Adapter\BpmnWorkflow::createFromStruct(json_decode($json, true));
self::$projectUid = $arrayResult[0]["new_uid"];
self::$fileXml = PATH_DOCUMENT . "output" . PATH_SEP . self::$projectUid . ".xml";
self::$exporter = new \ProcessMaker\Exporter\XmlExporter(self::$projectUid);
}
}
/**
* Delete project
*
* @coversNothing
*/
public static function tearDownAfterClass()
{
$bpmnWf = \ProcessMaker\Project\Adapter\BpmnWorkflow::load(self::$projectUid);
$bpmnWf->remove();
unlink(self::$fileXml);
}
/**
* Test export
*
* @covers \ProcessMaker\Exporter\XmlExporter::export
*
* @return string
*/
public function testExport()
{
$strXml = self::$exporter->export();
$this->assertTrue(is_string($strXml));
$this->assertNotEmpty($strXml);
return $strXml;
}
/**
* Test build
*
* @covers \ProcessMaker\Exporter\XmlExporter::build
*
* @depends testExport
* @param string $strXml Data xml
*/
public function testBuild($strXml)
{
//DOMDocument
$doc = new \DOMDocument();
$doc->loadXML($strXml);
$nodeRoot = $doc->getElementsByTagName("ProcessMaker-Project")->item(0);
$uid = "";
//Node meta
$nodeMeta = $nodeRoot->getElementsByTagName("metadata")->item(0)->getElementsByTagName("meta");
$this->assertNotEmpty($nodeMeta);
foreach ($nodeMeta as $value) {
$node = $value;
if ($node->hasAttribute("key") && $node->getAttribute("key") == "uid") {
$uid = $node->nodeValue;
break;
}
}
$this->assertEquals(self::$projectUid, $uid);
//Node definition
$nodeDefinition = $nodeRoot->getElementsByTagName("definition");
$this->assertNotEmpty($nodeDefinition);
foreach ($nodeDefinition as $value) {
$node = $value;
if ($node->hasAttribute("class")) {
$this->assertTrue(in_array($node->getAttribute("class"), array("BPMN", "workflow")));
}
}
}
/**
* Test saveExport
*
* @covers \ProcessMaker\Exporter\XmlExporter::saveExport
*/
public function testSaveExport()
{
self::$exporter->saveExport(self::$fileXml);
$this->assertTrue(file_exists(self::$fileXml));
}
/**
* Test getTextNode
*
* @covers \ProcessMaker\Exporter\XmlExporter::getTextNode
*/
public function testGetTextNode()
{
//Is not implemented. Metodo getTextNode() is private
}
/**
* Test exception for invalid project uid
*
* @covers \ProcessMaker\Exporter\XmlExporter::__construct
*
* @expectedException Exception
* @expectedExceptionMessage Project "ProcessMaker\Project\Bpmn" with UID: 0, does not exist.
*/
public function test__constructExceptionInvalidProjectUid()
{
$exporter = new \ProcessMaker\Exporter\XmlExporter("0");
}
}