* Test token replacement for Print/Merge Task
*/
public function testMembershipTokenReplacementInPDF(): void {
- $membershipIds = $returnProperties = $categories = $expected = [];
+ $this->createLoggedInUser();
+ $expected = [];
[$tokens, $htmlMessage] = self::getSampleHTML();
+ $searchFormValues = [
+ 'radio_ts' => 'ts_sel',
+ 'task' => CRM_Member_Task::PDF_LETTER,
+ ];
+
$membershipDates = [
date('Y-m-d'),
date('Y-m-d', strtotime('-1 month')),
'end_date' => date('Y-m-d', strtotime("{$date} +1 year")),
];
$result = $this->callAPISuccess('membership', 'create', $params);
- $membershipIds[] = $result['id'];
+ $searchFormValues['mark_x_' . $result['id']] = 1;
$params = array_merge($params,
[
'fee' => '100.00',
}
}
}
- $messageToken = CRM_Utils_Token::getTokens($htmlMessage);
- $form = new CRM_Member_Form_Task_PDFLetter();
- $testHTML = $form->generateHTML($membershipIds,
- $returnProperties,
- NULL,
- NULL,
- $messageToken,
- $htmlMessage,
- $categories
- );
+
+ $form = $this->getFormObject('CRM_Member_Form_Task_PDFLetter', [
+ 'subject' => '{contact.first_name} {membership.source}',
+ 'html_message' => $htmlMessage,
+ ], NULL, $searchFormValues);
+ $form->buildForm();
+ try {
+ $form->postProcess();
+ }
+ catch (CRM_Core_Exception_PrematureExitException $e) {
+ $testHTML = $e->errorData['html'];
+ }
// Assert all membership tokens are replaced correctly.
$expected = array_values($expected);
foreach ($expected as $key => $dateVal) {
- $this->assertStringContainsString('Anthony', $testHTML[$key]);
- foreach ($tokens as $text => $token) {
- $this->assertStringContainsString($dateVal[$token], $testHTML[$key]);
+ $this->assertStringContainsString('Anthony', $testHTML);
+ foreach ($tokens as $token) {
+ $this->assertStringContainsString($dateVal[$token], $testHTML);
}
}
}
*
* @param string $pageName
*
+ * @param array $searchFormValues
+ * Values for the search form if the form is a task eg.
+ * for selected ids 6 & 8:
+ * [
+ * 'radio_ts' => 'ts_sel',
+ * 'task' => CRM_Member_Task::PDF_LETTER,
+ * 'mark_x_6' => 1,
+ * 'mark_x_8' => 1,
+ * ]
+ *
* @return \CRM_Core_Form
*/
- public function getFormObject($class, $formValues = [], $pageName = '') {
+ public function getFormObject($class, $formValues = [], $pageName = '', $searchFormValues = []) {
$_POST = $formValues;
/* @var CRM_Core_Form $form */
$form = new $class();
}
$form->controller->setStateMachine(new CRM_Core_StateMachine($form->controller));
$_SESSION['_' . $form->controller->_name . '_container']['values'][$pageName] = $formValues;
+ if ($searchFormValues) {
+ $_SESSION['_' . $form->controller->_name . '_container']['values']['Search'] = $searchFormValues;
+ }
return $form;
}