From 6c19459a7c9ab378a50ab624ba6f3bf2e6eab0e1 Mon Sep 17 00:00:00 2001
From: Tim Otten <totten@civicrm.org>
Date: Mon, 27 Sep 2021 23:06:32 -0700
Subject: [PATCH] (REF) ExampleWorkflowTest - Add coverage for
 alterMailParams($params['valueName'])

---
 .../ExampleWorkflowMessageTest.php            | 35 +++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/tests/phpunit/Civi/WorkflowMessage/ExampleWorkflowMessageTest.php b/tests/phpunit/Civi/WorkflowMessage/ExampleWorkflowMessageTest.php
index 04b1e75ff3..9e4b2babc9 100644
--- a/tests/phpunit/Civi/WorkflowMessage/ExampleWorkflowMessageTest.php
+++ b/tests/phpunit/Civi/WorkflowMessage/ExampleWorkflowMessageTest.php
@@ -259,22 +259,50 @@ class ExampleWorkflowMessageTest extends \CiviUnitTestCase {
     $this->assertTrue(!isset($envelope['myProtectedInt']));
   }
 
+  public function testExampleRender() {
+    $hookCount = 0;
+    $rand = rand(0, 1000);
+    $cid = $this->individualCreate(['first_name' => 'Foo', 'last_name' => 'Bar' . $rand, 'prefix_id' => NULL, 'suffix_id' => NULL]);
+    /** @var \Civi\WorkflowMessage\GenericWorkflowMessage $ex */
+    $ex = $this->createExample()->setContactId($cid);
+    \Civi::dispatcher()->addListener('hook_civicrm_alterMailParams', function($e) use (&$hookCount) {
+      $hookCount++;
+      $this->assertEquals('my_example_wf', $e->params['valueName'], 'ExampleWorkflow::WORKFLOW should propagate to params[valueName]');
+    });
+    $this->assertEquals(0, $hookCount);
+    $rendered = $ex->renderTemplate([
+      'messageTemplate' => [
+        'msg_subject' => 'Hello {contact.display_name}',
+      ],
+    ]);
+    $this->assertEquals(1, $hookCount);
+    $this->assertEquals('Hello Foo Bar' . $rand, $rendered['subject']);
+  }
+
   public function testImpromptuRender() {
+    $hookCount = 0;
     $rand = rand(0, 1000);
     $cid = $this->individualCreate(['first_name' => 'Foo', 'last_name' => 'Bar' . $rand, 'prefix_id' => NULL, 'suffix_id' => NULL]);
     /** @var \Civi\WorkflowMessage\GenericWorkflowMessage $ex */
     $ex = WorkflowMessage::create('some_impromptu_wf', [
       'tokenContext' => ['contactId' => $cid],
     ]);
+    \Civi::dispatcher()->addListener('hook_civicrm_alterMailParams', function($e) use (&$hookCount) {
+      $hookCount++;
+      $this->assertEquals('some_impromptu_wf', $e->params['valueName'], 'Adhoc name should propagate to params[workflow]');
+    });
+    $this->assertEquals(0, $hookCount);
     $rendered = $ex->renderTemplate([
       'messageTemplate' => [
         'msg_subject' => 'Hello {contact.display_name}',
       ],
     ]);
+    $this->assertEquals(1, $hookCount);
     $this->assertEquals('Hello Foo Bar' . $rand, $rendered['subject']);
   }
 
   public function testRenderStoredTemplate() {
+    $hookCount = 0;
     $rand = rand(0, 1000);
     $cid = $this->individualCreate(['first_name' => 'Foo', 'last_name' => 'Bar' . $rand, 'prefix_id' => NULL, 'suffix_id' => NULL]);
     /** @var \Civi\WorkflowMessage\GenericWorkflowMessage $ex */
@@ -287,7 +315,14 @@ class ExampleWorkflowMessageTest extends \CiviUnitTestCase {
         'survey_id' => NULL,
       ],
     ]);
+
+    \Civi::dispatcher()->addListener('hook_civicrm_alterMailParams', function($e) use (&$hookCount) {
+      $hookCount++;
+      $this->assertEquals('petition_sign', $e->params['valueName']);
+    });
+    $this->assertEquals(0, $hookCount);
     $rendered = $ex->renderTemplate();
+    $this->assertEquals(1, $hookCount);
     $this->assertStringContainsString('Foo Bar' . $rand, $rendered['subject']);
     $this->assertStringContainsString('Thank you for signing The Fake Petition', $rendered['html']);
     $this->assertStringContainsString('Thank you for signing The Fake Petition', $rendered['text']);
-- 
2.25.1