View source
<?php
class FillPdfWebformTestCase extends DrupalWebTestCase {
protected $profile = 'minimal';
protected $webforms;
protected $message;
public static function getInfo() {
return array(
'name' => 'FillPDF link creation for Webform',
'description' => 'Ensure that FillPDF creates correct links for webforms.',
'group' => 'FillPDF',
);
}
public function setUp() {
parent::setUp(array(
'fillpdf',
));
$webforms = array();
for ($nid = 111; $nid <= 113; $nid++) {
$webforms[] = array(
'webform' => (object) array(
'nid' => $nid,
),
'submission' => (object) array(
'sid' => $nid + 100,
),
);
}
$this->webforms = $webforms;
$this->message = "Test case %name:\n<br />%output (actual result) equals\n<br />%expected (expected).";
}
public function testWebformLink() {
$base_context = array(
'nodes' => array(),
'webforms' => array(),
'uc_orders' => array(),
'uc_order_products' => array(),
'entities' => array(),
);
foreach ($this
->dataProvider() as $test_case) {
list($name, $webforms, $expected) = $test_case;
$context = array(
'webforms' => $webforms,
) + $base_context;
$output = rawurldecode(fillpdf_context_to_link(1, $context));
$this
->assertEqual($expected, $output, t($this->message, array(
'%name' => $name,
'%output' => $output,
'%expected' => $expected,
)));
}
}
public function testLegacyWebformLink() {
foreach ($this
->dataProvider() as $test_case) {
list($name, $webforms, $expected) = $test_case;
if (count($webforms) == 1) {
$webform = reset($webforms);
$webform_arr = array(
'nid' => $webform['webform']->nid,
'sid' => $webform['submission']->sid,
);
$output = rawurldecode(fillpdf_pdf_link(1, NULL, $webform_arr));
$this
->assertEqual($expected, $output, t($this->message, array(
'%name' => $name . ' (legacy format)',
'%output' => $output,
'%expected' => $expected,
)));
}
}
}
public function dataProvider() {
$base_url = url('fillpdf', array(
'query' => array(
'fid' => 1,
),
'absolute' => TRUE,
));
$test_cases = array();
$test_cases[] = array(
'Single webform',
array(
reset($this->webforms),
),
$base_url . '&webform[nid]=111&webform[sid]=211',
);
$test_cases[] = array(
'Multiple webforms',
$this->webforms,
$base_url . '&webforms[0][nid]=111&webforms[0][sid]=211&webforms[1][nid]=112&webforms[1][sid]=212&webforms[2][nid]=113&webforms[2][sid]=213',
);
$test_cases[] = array(
'Multiple webforms (in reverse order)',
array_reverse($this->webforms),
$base_url . '&webforms[0][nid]=113&webforms[0][sid]=213&webforms[1][nid]=112&webforms[1][sid]=212&webforms[2][nid]=111&webforms[2][sid]=211',
);
return $test_cases;
}
}