diff --git a/api/v3/Mailing.php b/api/v3/Mailing.php index c29d3d1350e38dd65ce15cd3150358b89d869ead..a71e5645d96f8ba969693eeecd8be2a227d24634 100644 --- a/api/v3/Mailing.php +++ b/api/v3/Mailing.php @@ -594,7 +594,7 @@ function civicrm_api3_mailing_preview($params) { return civicrm_api3_create_success([ 'id' => $mailingID, 'contact_id' => $contactID, - 'subject' => $mime->headers()['Subject'], + 'subject' => CRM_Utils_Array::value('Subject', $mime->headers(), ''), 'body_html' => $mime->getHTMLBody(), 'body_text' => $mime->getTXTBody(), ]); diff --git a/tests/phpunit/CRM/SMS/PreviewTest.php b/tests/phpunit/CRM/SMS/PreviewTest.php new file mode 100644 index 0000000000000000000000000000000000000000..dfe82711c3f427e2dc13226473a1eeb246ef493e --- /dev/null +++ b/tests/phpunit/CRM/SMS/PreviewTest.php @@ -0,0 +1,59 @@ +<?php + +/** + * Test SMS Preview + * + * @group headless + */ +class CRM_SMS_PreviewTest extends CiviUnitTestCase { + + /** + * Set Up Function + */ + public function setUp() { + parent::setUp(); + $option = $this->callAPISuccess('option_value', 'create', ['option_group_id' => 'sms_provider_name', 'name' => 'test_provider_name', 'label' => 'Test Provider Label', 'value' => 1]); + $this->option_value = $option['id']; + } + + /** + * Clean up after each test. + */ + public function tearDown() { + parent::tearDown(); + $this->callAPISuccess('option_value', 'delete', ['id' => $this->option_value]); + } + + /** + * Test SMS preview. + */ + public function testSMSPreview() { + $result = $this->callAPISuccess('SmsProvider', 'create', [ + 'title' => 'test SMS provider', + 'username' => 'test', + 'password' => 'password', + // 'name' is the option_value 'value' (not id, not name) we created in setUp() + 'name' => 1, + 'is_active' => 1, + 'is_default' => 1, + 'api_type' => 1, + ]); + $provider_id = $result['id']; + $result = $this->callAPISuccess('Mailing', 'create', [ + 'name' => "Test1", + 'from_name' => "+12223334444", + 'from_email' => "test@test.com", + 'replyto_email' => "test@test.com", + 'body_text' => "Testing body", + 'sms_provider_id' => $provider_id, + 'header_id' => NULL, + 'footer_id' => NULL, + 'unsubscribe_id' => NULL, + ]); + $mailing_id = $result['id']; + $result = $this->callAPISuccess('Mailing', 'preview', [ + 'id' => $mailing_id, + ]); + } + +}