From 59d861cb9b838005c3e2d5f12452805087f1ff08 Mon Sep 17 00:00:00 2001 From: jitendrapurohit <jitendra.purohit@webaccessglobal.com> Date: Fri, 23 Dec 2016 18:27:31 +0530 Subject: [PATCH 1/2] CRM-19761: Add unit test and some fixes --- CRM/Contribute/Form/Task.php | 7 +++ CRM/Contribute/Form/Task/PDFLetter.php | 2 +- CRM/Contribute/Form/Task/PDFLetterCommon.php | 11 +++- CRM/Contribute/Form/Task/Status.php | 7 --- CRM/Utils/PDF/Document.php | 4 +- .../Form/Task/PDFLetterCommonTest.php | 53 ++++++++++++++++++ .../Form/Task/sample_documents/Template.docx | Bin 0 -> 4154 bytes .../Form/Task/sample_documents/Template.odt | Bin 0 -> 15210 bytes 8 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.docx create mode 100644 tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.odt diff --git a/CRM/Contribute/Form/Task.php b/CRM/Contribute/Form/Task.php index df277b28545d..0e1417966786 100644 --- a/CRM/Contribute/Form/Task.php +++ b/CRM/Contribute/Form/Task.php @@ -184,6 +184,13 @@ public static function preProcessCommon(&$form, $useTable = FALSE) { } } + /** + * Sets contribution Ids for unit test. + */ + public function setContributionIds($contributionIds) { + $this->_contributionIds = $contributionIds; + } + /** * Given the contribution id, compute the contact id * since its used for things like send email diff --git a/CRM/Contribute/Form/Task/PDFLetter.php b/CRM/Contribute/Form/Task/PDFLetter.php index 49c52dbc1e21..810ae851768c 100644 --- a/CRM/Contribute/Form/Task/PDFLetter.php +++ b/CRM/Contribute/Form/Task/PDFLetter.php @@ -140,7 +140,7 @@ public function buildQuickForm() { $this->addButtons(array( array( - 'type' => 'submit', + 'type' => 'upload', 'name' => ts('Make Thank-you Letters'), 'isDefault' => TRUE, ), diff --git a/CRM/Contribute/Form/Task/PDFLetterCommon.php b/CRM/Contribute/Form/Task/PDFLetterCommon.php index b93bd533a030..696d5f018ece 100644 --- a/CRM/Contribute/Form/Task/PDFLetterCommon.php +++ b/CRM/Contribute/Form/Task/PDFLetterCommon.php @@ -10,9 +10,12 @@ class CRM_Contribute_Form_Task_PDFLetterCommon extends CRM_Contact_Form_Task_PDF * Process the form after the input has been submitted and validated. * * @param CRM_Contribute_Form_Task $form + * @param array $formValues */ - public static function postProcess(&$form) { - $formValues = $form->controller->exportValues($form->getName()); + public static function postProcess(&$form, $formValues = NULL) { + if (empty($formValues)) { + $formValues = $form->controller->exportValues($form->getName()); + } list($formValues, $categories, $html_message, $messageToken, $returnProperties) = self::processMessageTemplate($formValues); $isPDF = FALSE; $emailParams = array(); @@ -108,6 +111,10 @@ public static function postProcess(&$form) { } } } + + if (!empty($formValues['is_unit_test'])) { + return $html; + } //createActivities requires both $form->_contactIds and $contacts - //@todo - figure out why $form->_contactIds = array_keys($contacts); diff --git a/CRM/Contribute/Form/Task/Status.php b/CRM/Contribute/Form/Task/Status.php index 26aefacf3c60..462a5b9fee7a 100644 --- a/CRM/Contribute/Form/Task/Status.php +++ b/CRM/Contribute/Form/Task/Status.php @@ -82,13 +82,6 @@ public function preProcess() { $this->assign('single', $this->_single); } - /** - * Sets contribution Ids for unit test. - */ - public function setContributionIds($contributionIds) { - $this->_contributionIds = $contributionIds; - } - /** * Build the form object. */ diff --git a/CRM/Utils/PDF/Document.php b/CRM/Utils/PDF/Document.php index b2ecd6aede17..49a29f06328a 100644 --- a/CRM/Utils/PDF/Document.php +++ b/CRM/Utils/PDF/Document.php @@ -106,8 +106,8 @@ public static function printDoc($phpWord, $ext, $fileName) { 'pdf' => 'PDF', ); - if (realpath($phpWord)) { - $phpWord = \PhpOffice\PhpWord\IOFactory::load($phpWord, $formats[$ext]); + if (realpath($fileName)) { + $phpWord = \PhpOffice\PhpWord\IOFactory::load($fileName, $formats[$ext]); } $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, $formats[$ext]); diff --git a/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php b/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php index 297057b91ca8..b882a4d8c551 100644 --- a/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php +++ b/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php @@ -39,6 +39,16 @@ class CRM_Contribute_Form_Task_PDFLetterCommonTest extends CiviUnitTestCase { */ protected $_individualId; + protected $_docTypes = NULL; + + protected $_contactIds = NULL; + + protected function setUp() { + parent::setUp(); + $this->_individualId = $this->individualCreate(array('first_name' => 'Anthony', 'last_name' => 'Collins')); + $this->_docTypes = CRM_Core_SelectValues::documentApplicationType(); + } + /** * Clean up after each test. */ @@ -82,4 +92,47 @@ public function hookTokenValues(&$details, $contactIDs, $jobID, $tokens, $classN } } + /** + * Test contribution token replacement in + * html returned by postProcess function. + */ + public function testPostProcess() { + $this->_individualId = $this->individualCreate(); + foreach (array('docx', 'odt') as $docType) { + $formValues = array( + 'is_unit_test' => TRUE, + 'group_by' => NULL, + 'document_file' => array( + 'name' => __DIR__ . "/sample_documents/Template.$docType", + 'type' => $this->_docTypes[$docType], + ), + ); + + $contributionParams = array( + 'contact_id' => $this->_individualId, + 'total_amount' => 100, + 'financial_type_id' => 'Donation', + ); + $contribution = $this->callAPISuccess('Contribution', 'create', $contributionParams); + $contributionId = $contribution['id']; + $form = new CRM_Contribute_Form_Task_PDFLetter(); + $form->setContributionIds(array($contributionId)); + $format = Civi::settings()->get('dateformatFull'); + $date = CRM_Utils_Date::getToday(); + $displayDate = CRM_Utils_Date::customFormat($date, $format); + + $html = CRM_Contribute_Form_Task_PDFLetterCommon::postProcess($form, $formValues); + $expectedValues = array( + 'Hello Anthony Collins', + '$ 100.00', + $displayDate, + 'Donation' + ); + + foreach ($expectedValues as $val) { + $this->assertTrue(strpos($html[$contributionId], $val) !== 0); + } + } + } + } diff --git a/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.docx b/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.docx new file mode 100644 index 0000000000000000000000000000000000000000..f030b0e648a47e662aed217d3550bdfceb2ade32 GIT binary patch literal 4154 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 literal 0 HcmV?d00001 diff --git a/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.odt b/tests/phpunit/CRM/Contribute/Form/Task/sample_documents/Template.odt new file mode 100644 index 0000000000000000000000000000000000000000..ffd70a76c7dba05b6ba53c67f002e5d7890dc05c GIT binary patch literal 15210 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 literal 0 HcmV?d00001 From 993a5b9981ad568ba65c7555e2e9732d4f3214fc Mon Sep 17 00:00:00 2001 From: Jitendra Purohit <jitendra.purohit@webaccessglobal.com> Date: Sat, 24 Dec 2016 13:07:04 +0530 Subject: [PATCH 2/2] warning fix --- tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php b/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php index b882a4d8c551..0c692e980361 100644 --- a/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php +++ b/tests/phpunit/CRM/Contribute/Form/Task/PDFLetterCommonTest.php @@ -126,7 +126,7 @@ public function testPostProcess() { 'Hello Anthony Collins', '$ 100.00', $displayDate, - 'Donation' + 'Donation', ); foreach ($expectedValues as $val) {