From 8a5abba836e797143a6edb9185a80b8c8437124f Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Mon, 13 Sep 2021 16:13:01 +1200 Subject: [PATCH] Enhance pdf letter test for mememberships --- .../CRM/Member/Form/Task/PDFLetterTest.php | 38 +++++++++++-------- tests/phpunit/CiviTest/CiviUnitTestCase.php | 15 +++++++- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/tests/phpunit/CRM/Member/Form/Task/PDFLetterTest.php b/tests/phpunit/CRM/Member/Form/Task/PDFLetterTest.php index 10d7ae9ff2..2f73473780 100644 --- a/tests/phpunit/CRM/Member/Form/Task/PDFLetterTest.php +++ b/tests/phpunit/CRM/Member/Form/Task/PDFLetterTest.php @@ -28,9 +28,15 @@ class CRM_Member_Form_Task_PDFLetterTest extends CiviUnitTestCase { * 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')), @@ -50,7 +56,7 @@ class CRM_Member_Form_Task_PDFLetterTest extends CiviUnitTestCase { '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', @@ -70,23 +76,25 @@ class CRM_Member_Form_Task_PDFLetterTest extends CiviUnitTestCase { } } } - $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); } } } diff --git a/tests/phpunit/CiviTest/CiviUnitTestCase.php b/tests/phpunit/CiviTest/CiviUnitTestCase.php index f51b6ba857..b1611dff83 100644 --- a/tests/phpunit/CiviTest/CiviUnitTestCase.php +++ b/tests/phpunit/CiviTest/CiviUnitTestCase.php @@ -3335,9 +3335,19 @@ class CiviUnitTestCase extends PHPUnit\Framework\TestCase { * * @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(); @@ -3356,6 +3366,9 @@ class CiviUnitTestCase extends PHPUnit\Framework\TestCase { } $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; } -- 2.25.1