Skip to content

Commit

Permalink
Merge pull request #22483 from eileenmcnaughton/token1
Browse files Browse the repository at this point in the history
Fully deprecate `getTokenDetails`
  • Loading branch information
mattwire authored Mar 9, 2022
2 parents 66bb837 + 6d5a7ee commit f229b2f
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 145 deletions.
1 change: 1 addition & 0 deletions CRM/Utils/Token.php
Original file line number Diff line number Diff line change
Expand Up @@ -1178,6 +1178,7 @@ public static function getTokenDetails(
$className = NULL,
$jobID = NULL
) {
CRM_Core_Error::deprecatedFunctionWarning('If you hit this in mailing code you should use flexmailer - otherwise use the token processor');
$params = [];
foreach ($contactIDs as $contactID) {
$params[] = [
Expand Down
38 changes: 36 additions & 2 deletions tests/phpunit/CRM/Mailing/MailingSystemTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@
*/

/**
* Class CRM_Mailing_MailingSystemTest
* Class CRM_Mailing_MailingSystemTest.
*
* This class tests the deprecated code that we are moving
* away from supporting.
*
* MailingSystemTest checks that overall composition and delivery of
* CiviMail blasts works. It extends CRM_Mailing_BaseMailingSystemTest
Expand All @@ -38,6 +41,9 @@ class CRM_Mailing_MailingSystemTest extends CRM_Mailing_BaseMailingSystemTest {

private $counts;

/**
* Set up the deprecated bao support.
*/
public function setUp(): void {
parent::setUp();
// If we happen to execute with flexmailer active, use BAO mode.
Expand All @@ -47,16 +53,20 @@ public function setUp(): void {
$hooks = \CRM_Utils_Hook::singleton();
$hooks->setHook('civicrm_alterMailParams',
[$this, 'hook_alterMailParams']);
error_reporting(E_ALL && !E_USER_DEPRECATED);
}

/**
* @see CRM_Utils_Hook::alterMailParams
*/
public function hook_alterMailParams(&$params, $context = NULL) {
public function hook_alterMailParams(&$params, $context = NULL): void {
$this->counts['hook_alterMailParams'] = 1;
$this->assertEquals('civimail', $context);
}

/**
* Post test cleanup.
*/
public function tearDown(): void {
global $dbLocale;
if ($dbLocale) {
Expand All @@ -66,6 +76,30 @@ public function tearDown(): void {
$this->assertNotEmpty($this->counts['hook_alterMailParams']);
}

/**
* Test legacy mailer preview functionality.
*/
public function testMailerPreviewExtraScheme(): void {
$contactID = $this->individualCreate();
$displayName = $this->callAPISuccess('contact', 'get', ['id' => $contactID]);
$displayName = $displayName['values'][$contactID]['display_name'];
$this->assertNotEmpty($displayName);

$params = $this->_params;
$params['body_html'] = '<a href="http://{action.forward}">Forward this email written in ckeditor</a>';
$params['api.Mailing.preview'] = [
'id' => '$value.id',
'contact_id' => $contactID,
];
$params['options']['force_rollback'] = 1;

$result = $this->callAPISuccess('mailing', 'create', $params);
$previewResult = $result['values'][$result['id']]['api.Mailing.preview'];
$this->assertRegexp('!>Forward this email written in ckeditor</a>!', $previewResult['values']['body_html']);
$this->assertRegexp('!<a href="([^"]+)civicrm/mailing/forward&amp;amp;reset=1&amp;jid=&amp;qid=&amp;h=\w*">!', $previewResult['values']['body_html']);
$this->assertStringNotContainsString("http://http://", $previewResult['values']['body_html']);
}

// ---- Boilerplate ----

// The remainder of this class contains dummy stubs which make it easier to
Expand Down
112 changes: 0 additions & 112 deletions tests/phpunit/CRM/Utils/TokenTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,6 @@
*/
class CRM_Utils_TokenTest extends CiviUnitTestCase {

/**
* Basic test on getTokenDetails function.
*/
public function testGetTokenDetails() {
$contactID = $this->individualCreate(['preferred_communication_method' => ['Phone', 'Fax']]);
[$resolvedTokens] = CRM_Utils_Token::getTokenDetails([$contactID]);
$this->assertEquals('Phone, Fax', $resolvedTokens[$contactID]['preferred_communication_method']);
}

/**
* Test getting contacts w/o primary location type
*
* Check for situation described in CRM-19876.
*/
public function testSearchByPrimaryLocation() {
// Disable searchPrimaryDetailsOnly civi settings so we could test the functionality without it.
Civi::settings()->set('searchPrimaryDetailsOnly', '0');

// create a contact with multiple email address and among which one is primary
$contactID = $this->individualCreate();
$primaryEmail = uniqid() . '@primary.com';
$this->callAPISuccess('Email', 'create', [
'contact_id' => $contactID,
'email' => $primaryEmail,
'location_type_id' => 'Other',
'is_primary' => 1,
]);
$this->callAPISuccess('Email', 'create', [
'contact_id' => $contactID,
'email' => uniqid() . '@galaxy.com',
'location_type_id' => 'Work',
'is_primary' => 0,
]);
$this->callAPISuccess('Email', 'create', [
'contact_id' => $contactID,
'email' => uniqid() . '@galaxy.com',
'location_type_id' => 'Work',
'is_primary' => 0,
]);

$contactIDs = [$contactID];

// when we are fetching contact details ON basis of primary address fields
[$contactDetails] = CRM_Utils_Token::getTokenDetails($contactIDs);
$this->assertEquals($primaryEmail, $contactDetails[$contactID]['email']);

// restore setting
Civi::settings()->set('searchPrimaryDetailsOnly', '1');
}

/**
* Test for replaceGreetingTokens.
*
Expand Down Expand Up @@ -85,68 +35,6 @@ public function testReplaceGreetingTokens(): void {
$this->assertEquals($tokenString, 'Custom ');
}

/**
* Test getting multiple contacts.
*
* Check for situation described in CRM-19876.
*/
public function testGetTokenDetailsMultipleEmails() {
$i = 0;

$params = [
'do_not_phone' => 1,
'do_not_email' => 0,
'do_not_mail' => 1,
'do_not_sms' => 1,
'do_not_trade' => 1,
'is_opt_out' => 0,
'email' => '[email protected]',
'legal_identifier' => 'convict 56',
'nick_name' => 'bob',
'contact_source' => 'bargain basement',
'formal_title' => 'Your silliness',
'job_title' => 'World Saviour',
'gender_id' => '1',
'birth_date' => '2017-01-01',
// 'city' => 'Metropolis',
];
$contactIDs = [];
while ($i < 27) {
$contactIDs[] = $contactID = $this->individualCreate($params);
$this->callAPISuccess('Email', 'create', [
'contact_id' => $contactID,
'email' => '[email protected]',
'location_type_id' => 'Other',
'is_primary' => 0,
]);
$this->callAPISuccess('Email', 'create', [
'contact_id' => $contactID,
'email' => '[email protected]',
'location_type_id' => 'Work',
'is_primary' => 1,
]);
$i++;
}
unset($params['email']);

[$resolvedTokens] = CRM_Utils_Token::getTokenDetails($contactIDs);
foreach ($contactIDs as $contactID) {
$resolvedContactTokens = $resolvedTokens[$contactID];
$this->assertEquals('Individual', $resolvedContactTokens['contact_type']);
$this->assertEquals('Anderson, Anthony', $resolvedContactTokens['sort_name']);
$this->assertEquals('en_US', $resolvedContactTokens['preferred_language']);
$this->assertEquals('Both', $resolvedContactTokens['preferred_mail_format']);
$this->assertEquals(3, $resolvedContactTokens['prefix_id']);
$this->assertEquals(3, $resolvedContactTokens['suffix_id']);
$this->assertEquals('Mr. Anthony J. Anderson II', $resolvedContactTokens['addressee_display']);
$this->assertEquals('[email protected]', $resolvedContactTokens['email']);

foreach ($params as $key => $value) {
$this->assertEquals($value, $resolvedContactTokens[$key]);
}
}
}

/**
* This is a basic test of the token processor (currently testing TokenCompatSubscriber)
* and makes sure that greeting + contact tokens are replaced.
Expand Down
31 changes: 0 additions & 31 deletions tests/phpunit/api/v3/MailingTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -306,37 +306,6 @@ public function testMailerPreview(): void {
$this->assertStringNotContainsString("http://http://", $previewResult['values']['body_html']);
}

/**
*
*/
public function testMailerPreviewExtraScheme() {
try {
\Civi::settings()->set('flexmailer_traditional', 'bao');

$contactID = $this->individualCreate();
$displayName = $this->callAPISuccess('contact', 'get', ['id' => $contactID]);
$displayName = $displayName['values'][$contactID]['display_name'];
$this->assertNotEmpty($displayName);

$params = $this->_params;
$params['body_html'] = '<a href="http://{action.forward}">Forward this email written in ckeditor</a>';
$params['api.Mailing.preview'] = [
'id' => '$value.id',
'contact_id' => $contactID,
];
$params['options']['force_rollback'] = 1;

$result = $this->callAPISuccess('mailing', 'create', $params);
$previewResult = $result['values'][$result['id']]['api.Mailing.preview'];
$this->assertRegexp('!>Forward this email written in ckeditor</a>!', $previewResult['values']['body_html']);
$this->assertRegexp('!<a href="([^"]+)civicrm/mailing/forward&amp;amp;reset=1&amp;jid=&amp;qid=&amp;h=\w*">!', $previewResult['values']['body_html']);
$this->assertStringNotContainsString("http://http://", $previewResult['values']['body_html']);

} finally {
\Civi::settings()->revert('flexmailer_traditional');
}
}

public function testMailerPreviewUnknownContact(): void {
$params = $this->_params;
$params['api.Mailing.preview'] = [
Expand Down

0 comments on commit f229b2f

Please sign in to comment.