3 +--------------------------------------------------------------------+
4 | CiviCRM version 4.7 |
5 +--------------------------------------------------------------------+
6 | Copyright CiviCRM LLC (c) 2004-2017 |
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
19 | You should have received a copy of the GNU Affero General Public |
20 | License and the CiviCRM Licensing Exception along |
21 | with this program; if not, contact CiviCRM LLC |
22 | at info[AT]civicrm[DOT]org. If you have questions about the |
23 | GNU Affero General Public License or the licensing of CiviCRM, |
24 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
25 +--------------------------------------------------------------------+
29 * File for the CiviCRM APIv3 job functions
31 * @package CiviCRM_APIv3
32 * @subpackage API_MailingContact
34 * @copyright CiviCRM LLC (c) 2004-2017
35 * @version $Id: Job.php 30879 2010-11-22 15:45:55Z shot $
39 * Class api_v3_MailingContactTest
42 class api_v3_MailingContactTest
extends CiviUnitTestCase
{
43 protected $_apiversion = 3;
44 protected $_entity = 'mailing';
46 public function setUp() {
49 'first_name' => 'abc1',
50 'contact_type' => 'Individual',
51 'last_name' => 'xyz1',
53 $this->_contact
= $this->callAPISuccess("contact", "create", $params);
56 public function tearDown() {
57 $this->callAPISuccess("contact", "delete", array('id' => $this->_contact
['id']));
62 * Test that the api responds correctly to null params.
64 * Do not copy and paste.
66 * Tests like this that test the wrapper belong in the SyntaxConformance class
67 * (which already has a 'not array test)
68 * I have left this here in case 'null' isn't covered in that class
69 * but don't copy it only any other classes
71 public function testMailingNullParams() {
72 $this->callAPIFailure('MailingContact', 'get', NULL);
75 public function testMailingContactGetFields() {
76 $result = $this->callAPISuccess('MailingContact', 'getfields', array(
80 $this->assertEquals('Delivered', $result['values']['type']['api.default']);
84 * Test for proper error when you do not supply the contact_id.
86 * Do not copy and paste.
88 * Test is of marginal if any value & testing of wrapper level functionality
89 * belongs in the SyntaxConformance class
91 public function testMailingNoContactID() {
93 'something' => 'This is not a real field',
95 $this->callAPIFailure('MailingContact', 'get', $params);
99 * Test that invalid contact_id return with proper error messages.
101 * Do not copy & paste.
103 * Test is of marginal if any value & testing of wrapper level functionality
104 * belongs in the SyntaxConformance class
106 public function testMailingContactInvalidContactID() {
107 $params = array('contact_id' => 'This is not a number');
108 $this->callAPIFailure('MailingContact', 'get', $params);
112 * Test that invalid types are returned with appropriate errors.
114 public function testMailingContactInvalidType() {
119 $this->callAPIFailure('MailingContact', 'get', $params);
123 * Test for success result when there are no mailings for a the given contact.
125 public function testMailingContactNoMailings() {
127 'contact_id' => $this->_contact
['id'],
129 $result = $this->callAPISuccess('MailingContact', 'get', $params);
130 $this->assertEquals($result['count'], 0);
131 $this->assertTrue(empty($result['values']));
135 * Test that the API returns a mailing properly when there is only one.
137 public function testMailingContactDelivered() {
138 $op = new PHPUnit_Extensions_Database_Operation_Insert();
140 $op->execute($this->_dbconn
,
141 $this->createXMLDataSet(
142 dirname(__FILE__
) . '/dataset/mailing_contact.xml'
145 // Create the Mailing and connections to the user.
146 $op->execute($this->_dbconn
,
147 $this->createXMLDataSet(
148 dirname(__FILE__
) . '/dataset/mailing_delivered.xml'
154 'type' => 'Delivered',
157 $result = $this->callAPISuccess('MailingContact', 'get', $params);
158 $count = $this->callAPISuccess('MailingContact', 'getcount', $params);
159 $this->assertEquals($result['count'], 1);
160 $this->assertEquals($count, 1);
161 $this->assertFalse(empty($result['values']));
162 $this->assertEquals($result['values'][1]['mailing_id'], 1);
163 $this->assertEquals($result['values'][1]['subject'], "Some Subject");
164 $this->assertEquals($result['values'][1]['creator_id'], 3);
165 $this->assertEquals($result['values'][1]['creator_name'], "xyz1, abc1");
170 * Test that the API returns only the "Bounced" mailings when instructed to do so.
172 public function testMailingContactBounced() {
173 $op = new PHPUnit_Extensions_Database_Operation_Insert();
175 $op->execute($this->_dbconn
,
176 $this->createXMLDataSet(
177 dirname(__FILE__
) . '/dataset/mailing_contact.xml'
180 // Create the Mailing and connections to the user.
181 $op->execute($this->_dbconn
,
182 $this->createXMLDataSet(
183 dirname(__FILE__
) . '/dataset/mailing_bounced.xml'
192 $result = $this->callAPISuccess('MailingContact', 'get', $params);
193 $this->assertEquals($result['count'], 1);
194 $this->assertFalse(empty($result['values']));
195 $this->assertEquals($result['values'][2]['mailing_id'], 2);
196 $this->assertEquals($result['values'][2]['subject'], "Some Subject");
197 $this->assertEquals($result['values'][2]['creator_id'], 3);
198 $this->assertEquals($result['values'][2]['creator_name'], "xyz1, abc1");