'abc1', 'contact_type' => 'Individual', 'last_name' => 'xyz1', ); $this->_contact = $this->callAPISuccess("contact", "create", $params); } function tearDown() { $this->callAPISuccess("contact", "delete", array('id' => $this->_contact['id'])); parent::tearDown(); } /* * Test that the api responds correctly to null params * Note to copy & pasters - tests like this that test the wrapper belong in the SyntaxConformance class * (which already has a 'not array test) * I have left this here in case 'null' isn't covered in that class * but don't copy it only any other classes */ public function testMailingNullParams() { $result = $this->callAPIFailure('MailingContact', 'get', null); } public function testMailingContactGetFields() { $result = $this->callAPISuccess('MailingContact', 'getfields', array( 'action' => 'get', ) ); $this->assertEquals('Delivered', $result['values']['type']['api.default']); } /** * Test that the api will return the proper error when you do not * supply the contact_id * Note to copy & pasters - test is of marginal if any value & testing of wrapper level functionaliy * belongs in the SyntaxConformance class */ public function testMailingNoContactID() { $params = array( 'something' => 'This is not a real field', ); $result = $this->callAPIFailure('MailingContact', 'get', $params); } /** * Test that invalid contact_id return with proper error messages * Note to copy & pasters - test is of marginal if any value & testing of wrapper level functionaliy * belongs in the SyntaxConformance class */ public function testMailingContactInvalidContactID() { $params = array('contact_id' => 'This is not a number',); $result = $this->callAPIFailure('MailingContact', 'get', $params); } /** * Test that invalid types are returned with appropriate errors */ public function testMailingContactInvalidType() { $params = array( 'contact_id' => 23, 'type' => 'invalid', ); $result = $this->callAPIFailure('MailingContact', 'get', $params); } /** * Test that the API returns properly when there are no mailings * for a the given contact */ public function testMailingContactNoMailings() { $params = array( 'contact_id' => $this->_contact['id'], ); $result = $this->callAPISuccess('MailingContact', 'get', $params); $this->assertEquals($result['count'], 0, "In line " . __LINE__); $this->assertTrue(empty($result['values']), "In line " . __LINE__); } /* * Test that the API returns a mailing properly when there is only one */ public function testMailingContactDelivered() { $op = new PHPUnit_Extensions_Database_Operation_Insert(); //Create the User $op->execute($this->_dbconn, new PHPUnit_Extensions_Database_DataSet_XMLDataSet( dirname(__FILE__) . '/dataset/mailing_contact.xml' ) ); //~ Create the Mailing and connections to the user $op->execute($this->_dbconn, new PHPUnit_Extensions_Database_DataSet_XMLDataSet( dirname(__FILE__) . '/dataset/mailing_delivered.xml' ) ); $params = array( 'contact_id' => 23, 'type' => 'Delivered', ); $result = $this->callAPISuccess('MailingContact', 'get', $params); $count = $this->callAPISuccess('MailingContact', 'getcount', $params); $this->assertEquals($result['count'], 1, "In line " . __LINE__); $this->assertEquals($count, 1, "In line " . __LINE__); $this->assertFalse(empty($result['values']), "In line " . __LINE__); $this->assertEquals($result['values'][1]['mailing_id'], 1, "In line " . __LINE__); $this->assertEquals($result['values'][1]['subject'], "Some Subject", "In line " . __LINE__); $this->assertEquals($result['values'][1]['creator_id'], 1, "In line " . __LINE__); $this->assertEquals($result['values'][1]['creator_name'], "xyz1, abc1", "In line " . __LINE__); } /* * Test that the API returns only the "Bounced" mailings when instructed to do so */ function testMailingContactBounced( ) { $op = new PHPUnit_Extensions_Database_Operation_Insert(); //Create the User $op->execute($this->_dbconn, new PHPUnit_Extensions_Database_DataSet_XMLDataSet( dirname(__FILE__) . '/dataset/mailing_contact.xml' ) ); //~ Create the Mailing and connections to the user $op->execute($this->_dbconn, new PHPUnit_Extensions_Database_DataSet_XMLDataSet( dirname(__FILE__) . '/dataset/mailing_bounced.xml' ) ); $params = array( 'contact_id' => 23, 'type' => 'Bounced', ); $result = $this->callAPISuccess('MailingContact', 'get', $params); $this->assertEquals($result['count'], 1, "In line " . __LINE__); $this->assertFalse(empty($result['values']), "In line " . __LINE__); $this->assertEquals($result['values'][2]['mailing_id'], 2, "In line " . __LINE__); $this->assertEquals($result['values'][2]['subject'], "Some Subject", "In line " . __LINE__); $this->assertEquals($result['values'][2]['creator_id'], 1, "In line " . __LINE__); $this->assertEquals($result['values'][2]['creator_name'], "xyz1, abc1", "In line " . __LINE__); } }