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) {