X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FCRM%2FUtils%2FTokenConsistencyTest.php;h=7e7f00c1f14beb690744372264e0320914d4d179;hb=d49e8eec43de89b0acef94e8c0fb5ef05507be23;hp=33612e5778dd323a3ca1b91c329d86d163386796;hpb=07d16b258b069dbdda241aaa95e0d59af2a9b218;p=civicrm-core.git diff --git a/tests/phpunit/CRM/Utils/TokenConsistencyTest.php b/tests/phpunit/CRM/Utils/TokenConsistencyTest.php index 33612e5778..7e7f00c1f1 100644 --- a/tests/phpunit/CRM/Utils/TokenConsistencyTest.php +++ b/tests/phpunit/CRM/Utils/TokenConsistencyTest.php @@ -72,21 +72,12 @@ class CRM_Utils_TokenConsistencyTest extends CiviUnitTestCase { // And check our deprecated tokens still work. $tokenHtml = CRM_Utils_Token::replaceCaseTokens($caseID, '{case.case_type_id} {case.status_id}'); $this->assertEquals('Housing Support Ongoing', $tokenHtml); - - $additionalTokensFromProcessor = [ - '{case.case_type_id}' => 'Case Type ID', - '{case.status_id}' => 'Case Status', - '{case.case_type_id:name}' => 'Machine name: Case Type', - '{case.status_id:name}' => 'Machine name: Case Status', - ]; - $expectedTokens = array_merge($this->getCaseTokens(), $additionalTokensFromProcessor); - $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [ 'controller' => __CLASS__, 'smarty' => FALSE, 'schema' => ['caseId'], ]); - $this->assertEquals(array_merge($expectedTokens, $this->getDomainTokens()), $tokenProcessor->listTokens()); + $this->assertEquals(array_merge($this->getCaseTokens(), $this->getDomainTokens()), $tokenProcessor->listTokens()); $tokenProcessor->addRow([ 'caseId' => $this->getCaseID(), ]); @@ -205,7 +196,8 @@ case.custom_1 :' . ' 'smarty' => FALSE, 'schema' => ['contribution_recurId'], ]); - $this->assertEquals(array_merge($this->getContributionRecurTokens(), $this->getDomainTokens()), $tokenProcessor->listTokens()); + $expectedTokens = array_merge($this->getContributionRecurTokens(), $this->getDomainTokens()); + $this->assertEquals(array_diff_key($expectedTokens, $this->getUnadvertisedTokens()), $tokenProcessor->listTokens()); $tokenString = $this->getTokenString(array_keys($this->getContributionRecurTokens())); $tokenProcessor->addMessage('html', $tokenString, 'text/plain'); @@ -225,9 +217,62 @@ case.custom_1 :' . ' '{membership.membership_type_id}' => 'Membership Type ID', '{membership.status_id:name}' => 'Machine name: Status', '{membership.membership_type_id:name}' => 'Machine name: Membership Type', + '{contribution_recur.frequency_unit}' => 'Frequency Unit', + '{contribution_recur.contribution_status_id}' => 'Status', + '{contribution_recur.payment_processor_id}' => 'Payment Processor ID', + '{contribution_recur.financial_type_id}' => 'Financial Type ID', + '{contribution_recur.payment_instrument_id}' => 'Payment Method', + '{contribution_recur.frequency_unit:name}' => 'Machine name: Frequency Unit', + '{contribution_recur.payment_instrument_id:name}' => 'Machine name: Payment Method', + '{contribution_recur.contribution_status_id:name}' => 'Machine name: Status', + '{contribution_recur.payment_processor_id:name}' => 'Machine name: Payment Processor', + '{contribution_recur.financial_type_id:name}' => 'Machine name: Financial Type', + '{participant.status_id:name}' => 'Machine name: Status', + '{participant.role_id:name}' => 'Machine name: Participant Role', + '{participant.status_id}' => 'Status ID', + '{participant.role_id}' => 'Participant Role ID', ]; } + /** + * Test tokens in 2 ways to ensure consistent handling. + * + * 1) as part of the greeting processing + * 2) via the token processor. + * + */ + public function testOddTokens(): void { + + $variants = [ + [ + 'string' => '{contact.individual_prefix}{ }{contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.individual_suffix}', + 'expected' => 'Mr. Anthony Anderson II', + ], + [ + 'string' => '{contact.prefix_id:label}{ }{contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.suffix_id:label}', + 'expected' => 'Mr. Anthony Anderson II', + ], + ]; + $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [ + 'smarty' => FALSE, + 'schema' => ['contactId'], + ]); + $contactID = $this->individualCreate(['middle_name' => '']); + $tokenProcessor->addRow(['contactId' => $contactID]); + $tokenProcessor->evaluate(); + foreach ($variants as $index => $variant) { + $tokenProcessor->addMessage($index, $variant['string'], 'text/plain'); + } + $tokenProcessor->evaluate(); + $result = $tokenProcessor->getRow(0); + foreach ($variants as $index => $variant) { + $greetingString = $variant['string']; + CRM_Utils_Token::replaceGreetingTokens($greetingString, $this->callAPISuccessGetSingle('Contact', ['id' => $contactID]), $contactID); + $this->assertEquals($variant['expected'], $greetingString); + $this->assertEquals($variant['expected'], $result->render($index)); + } + } + /** * Get the contribution recur tokens keyed by the token. * @@ -424,9 +469,7 @@ contribution_recur.payment_instrument_id:name :Check ]); $tokens = $tokenProcessor->listTokens(); // Add in custom tokens as token processor supports these. - $expectedTokens['{membership.custom_1}'] = 'Enter text here :: Group with field text'; - // Add in unadvertised tokens - for now they are included. - $expectedTokens = array_merge($expectedTokens, $this->getUnadvertisedTokens()); + $expectedTokens = array_merge($expectedTokens, $this->getTokensAdvertisedByTokenProcessorButNotLegacy()); $this->assertEquals(array_merge($expectedTokens, $this->getDomainTokens()), $tokens); $tokenProcessor->addMessage('html', $tokenString, 'text/plain'); $tokenProcessor->addRow(['membershipId' => $this->getMembershipID()]); @@ -435,6 +478,19 @@ contribution_recur.payment_instrument_id:name :Check } + /** + * Get the advertised tokens the legacy function doesn't know about. + * + * @return string[] + */ + public function getTokensAdvertisedByTokenProcessorButNotLegacy(): array { + return [ + '{membership.custom_1}' => 'Enter text here :: Group with field text', + '{membership.source}' => 'Source', + '{membership.status_override_end_date}' => 'Status Override End Date', + ]; + } + /** * Get declared membership tokens. * @@ -547,7 +603,7 @@ December 21st, 2007 $this->setupParticipantScheduledReminder(); $tokens = CRM_Core_SelectValues::participantTokens(); - $this->assertEquals($this->getParticipantTokens(), $tokens); + $this->assertEquals(array_diff_key($this->getParticipantTokens(), $this->getUnadvertisedTokens()), $tokens); $mut = new CiviMailUtils($this); @@ -699,11 +755,7 @@ December 21st, 2007 $this->setupParticipantScheduledReminder(); $tokens = CRM_Core_SelectValues::eventTokens(); - $unadvertisedTokens = [ - '{event.event_type_id}' => 'Event Type', - '{event.event_type_id:name}' => 'Machine name: Event Type', - ]; - $this->assertEquals(array_merge($this->getEventTokens(), $unadvertisedTokens), $tokens); + $this->assertEquals(array_merge($this->getEventTokens()), $tokens); $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [ 'controller' => __CLASS__, 'smarty' => FALSE,