Flesh out participant token test
authorEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 17 Sep 2021 20:20:37 +0000 (08:20 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Sat, 18 Sep 2021 01:21:56 +0000 (13:21 +1200)
m

tests/phpunit/CRM/Event/Form/Task/BadgeTest.php

index 6ba914bb56ab907325094f4c2a73e79fd44119fb..3da64f0b54be5d0eb2a9b7545f11078922bb8e18 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Civi\Api4\PrintLabel;
+
 /**
  *  Test CRM_Event_Form_Registration functions.
  *
@@ -15,8 +17,25 @@ class CRM_Event_Form_Task_BadgeTest extends CiviUnitTestCase {
    */
   public function testSubmit(): void {
     $this->createCustomGroupWithFieldOfType(['extends' => 'Participant']);
-    $contactID = $this->individualCreate();
-    $participantID = $this->participantCreate(['contact_id' => $contactID]);
+    $contactID = $this->individualCreate(['employer_id' => 1]);
+    $participantID = $this->participantCreate([
+      'contact_id' => $contactID,
+      'fee_level' => 'low',
+    ]);
+
+    $badgeLayout = PrintLabel::get()->addSelect('data')->execute()->first();
+    $values = [
+      'data' => array_merge($badgeLayout['data'], ['token' => [], 'font_name' => [''], 'font_size' => [], 'text_alignment' => []])
+    ];
+    foreach (array_keys($this->getAvailableTokens()) as $id => $token) {
+      $index = $id + 1;
+      $values['data']['token'][$index] = $token;
+      $values['data']['font_name'][$index] = 'dejavusans';
+      $values['data']['font_size'][$index] = '20';
+      $values['data']['font_style'][$index] = '';
+      $values['data']['text_alignment'][$index] = 'C';
+    }
+    PrintLabel::update()->addWhere('id', '=', 1)->setValues($values)->execute();
 
     $_REQUEST['context'] = 'view';
     $_REQUEST['id'] = $participantID;
@@ -39,45 +58,51 @@ class CRM_Event_Form_Task_BadgeTest extends CiviUnitTestCase {
     catch (CRM_Core_Exception_PrematureExitException $e) {
       $tokens = $e->errorData['formattedRow']['token'];
       $this->assertEquals([
-        1 => [
-          'value' => 'Annual CiviCRM meet',
-          'font_name' => 'dejavusans',
-          'font_size' => '9',
-          'font_style' => '',
-          'text_alignment' => 'L',
-          'token' => '{event.title}',
-        ],
-        2 =>
-          [
-            'value' => 'Mr. Anthony Anderson II',
-            'font_name' => 'dejavusans',
-            'font_size' => '20',
-            'font_style' => '',
-            'text_alignment' => 'C',
-            'token' => '{contact.display_name}',
-          ],
-        3 =>
-          [
-            'value' => NULL,
-            'font_name' => 'dejavusans',
-            'font_size' => '15',
-            'font_style' => '',
-            'text_alignment' => 'C',
-            'token' => '{contact.current_employer}',
-          ],
-        4 =>
-          [
-            'value' => 'October 21st',
-            'font_name' => 'dejavusans',
-            'font_size' => '9',
-            'font_style' => '',
-            'text_alignment' => 'R',
-            'token' => '{event.start_date}',
-          ],
-      ], $tokens);
+        'value' => 'Annual CiviCRM meet',
+        'font_name' => 'dejavusans',
+        'font_size' => '20',
+        'font_style' => '',
+        'text_alignment' => 'C',
+        'token' => '{event.title}',
+      ], $tokens[1]);
+      $index =1;
+      foreach ($this->getAvailableTokens() as $token => $expected) {
+        $this->assertEquals($expected, $tokens[$index]['value'], 'failure in token ' . $token);
+        $index++;
+      }
       return;
     }
     $this->fail('Should not be reached');
   }
 
+  /**
+   * @return string[]
+   */
+  protected function getAvailableTokens(): array {
+    $tokens = [
+      '{event.title}' => 'Annual CiviCRM meet',
+      '{contact.display_name}' => 'Mr. Anthony Anderson II',
+      '{contact.current_employer}' => 'Default Organization',
+      '{event.start_date}' => 'October 21st',
+      '{participant.participant_status_id}' => 2,
+      '{participant.participant_role_id}' => 1,
+      '{participant.participant_register_date}' => 'February 19th',
+      '{participant.participant_source}' => 'Wimbeldon',
+      '{participant.participant_fee_level}' => 'low',
+      '{participant.participant_fee_amount}' => NULL,
+      '{participant.participant_registered_by_id}' => NULL,
+      '{participant.transferred_to_contact_id}' => NULL,
+      '{participant.participant_role}' => 'Attendee',
+      '{participant.event_title}' => 'Annual CiviCRM meet',
+      '{participant.event_start_date}' => 'October 21st',
+      '{participant.event_end_date}' => 'October 23rd',
+      '{participant.fee_label}' => NULL,
+      '{participant.default_role_id}' => 1,
+      '{participant.template_title}' => NULL,
+      '{event.end_date}' => 'October 23rd',
+      '{event.id}' => 1,
+    ];
+    return $tokens;
+  }
+
 }