Skip to content

Commit

Permalink
dev/core#2834 Preliminary test on badge
Browse files Browse the repository at this point in the history
  • Loading branch information
eileenmcnaughton committed Sep 13, 2021
1 parent ba72411 commit 8643c7e
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 3 deletions.
5 changes: 4 additions & 1 deletion CRM/Badge/BAO/Badge.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class CRM_Badge_BAO_Badge {
* @param array $layoutInfo
* Associated array which contains meta data about format/layout.
*/
public function createLabels(&$participants, &$layoutInfo) {
public function createLabels($participants, &$layoutInfo) {
$this->pdf = new CRM_Utils_PDF_Label($layoutInfo['format'], 'mm');
$this->pdf->Open();
$this->pdf->setPrintHeader(FALSE);
Expand All @@ -58,6 +58,9 @@ public function createLabels(&$participants, &$layoutInfo) {
$this->pdf->AddPdfLabel($formattedRow);
}

if (CIVICRM_UF === 'UnitTests') {
throw new CRM_Core_Exception_PrematureExitException('pdf output called', ['formattedRow' => $formattedRow]);
}
$this->pdf->Output(CRM_Utils_String::munge($layoutInfo['title'], '_', 64) . '.pdf', 'D');
CRM_Utils_System::civiExit();
}
Expand Down
83 changes: 83 additions & 0 deletions tests/phpunit/CRM/Event/Form/Task/BadgeTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php

/**
* Test CRM_Event_Form_Registration functions.
*
* @package CiviCRM
* @group headless
*/
class CRM_Event_Form_Task_BadgeTest extends CiviUnitTestCase {

use CRMTraits_Custom_CustomDataTrait;

/**
* Test the the submit function on the event participant submit function.
*/
public function testSubmit(): void {
$this->createCustomGroupWithFieldOfType(['extends' => 'Participant']);
$contactID = $this->individualCreate();
$participantID = $this->participantCreate(['contact_id' => $contactID]);

$_REQUEST['context'] = 'view';
$_REQUEST['id'] = $participantID;
$_REQUEST['cid'] = $contactID;
/* @var CRM_Event_Form_Task_Badge $form */
$form = $this->getFormObject('CRM_Event_Form_Task_Badge', [
'badge_id' => 1,
],
NULL,
[
'task' => CRM_Core_Task::BATCH_UPDATE,
'radio_ts' => 'ts_sel',
'mark_x_' . $participantID,
]
);
$form->buildForm();
try {
$form->postProcess();
}
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);
return;
}
$this->fail('Should not be reached');
}

}
11 changes: 9 additions & 2 deletions tests/phpunit/CRMTraits/Custom/CustomDataTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,15 @@ public function createCustomGroup($params = []) {
'max_multiple' => 0,
], $params);
$identifier = $params['name'] ?? $params['title'];
$this->ids['CustomGroup'][$identifier] = CustomGroup::create(FALSE)->setValues($params)->execute()->first()['id'];
try {
$this->ids['CustomGroup'][$identifier] = CustomGroup::create(FALSE)
->setValues($params)
->execute()
->first()['id'];
}
catch (API_Exception $e) {
$this->fail('Could not create group ' . $e->getMessage());
}
return $this->ids['CustomGroup'][$identifier];
}

Expand Down Expand Up @@ -90,7 +98,6 @@ protected function getCustomFieldColumnName($key) {
*
* @param array $fieldParams
*
* @throws \API_Exception
*/
public function createCustomGroupWithFieldOfType(array $groupParams = [], string $customFieldType = 'text', ?string $identifier = NULL, array $fieldParams = []): void {
$supported = ['text', 'select', 'date', 'checkbox', 'int', 'contact_reference', 'radio', 'multi_country'];
Expand Down

0 comments on commit 8643c7e

Please sign in to comment.