From 00ed3e047193d7cd669016a08d1ea751fa572d8e Mon Sep 17 00:00:00 2001 From: Chris Burgess Date: Fri, 30 Sep 2016 06:14:51 +1300 Subject: [PATCH] Add test for format of Contact,get with return=group (#9140) * Add test for format of Contact,get with return=groups. CRM-19426 * Correct test structure, missed in previous commit. CRM-19426. * Rename test to better fit with other testContactGetFoo methods. CRM-19426. --- tests/phpunit/api/v3/ContactTest.php | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/tests/phpunit/api/v3/ContactTest.php b/tests/phpunit/api/v3/ContactTest.php index ea70d9f74e..1d677c1490 100644 --- a/tests/phpunit/api/v3/ContactTest.php +++ b/tests/phpunit/api/v3/ContactTest.php @@ -2967,4 +2967,63 @@ class api_v3_ContactTest extends CiviUnitTestCase { $this->callAPISuccess('Setting', 'create', array('contact_undelete' => TRUE)); } + /** + * Ensure format with return=group shows comma-separated group IDs. + * + * CRM-19426 + */ + public function testContactGetReturnGroup() { + // Set up a contact, asser that they were created. + $contact_params = array( + 'contact_type' => 'Individual', + 'first_name' => 'Test', + 'last_name' => 'Groupmember', + 'email' => 'test@example.org', + ); + $create_contact = $this->callApiSuccess('Contact', 'create', $contact_params); + $this->assertEquals(0, $create_contact['is_error']); + $this->assertInternalType('int', $create_contact['id']); + + $created_contact_id = $create_contact['id']; + + // Set up multiple groups, add the contact to the groups. + $test_groups = array('Test group A', 'Test group B'); + foreach ($test_groups as $title) { + // Use this contact as group owner, since we know they exist. + $group_params = array( + 'title' => $title, + 'created_id' => $created_contact_id, + ); + $create_group = $this->callApiSuccess('Group', 'create', $group_params); + $this->assertEquals(0, $create_group['is_error']); + $this->assertInternalType('int', $create_group['id']); + + $created_group_ids[] = $create_group['id']; + + // Add contact to the new group. + $group_contact_params = array( + 'contact_id' => $created_contact_id, + 'group_id' => $create_group['id'], + ); + $create_group_contact = $this->callApiSuccess('GroupContact', 'create', $group_contact_params); + $this->assertEquals(0, $create_group_contact['is_error']); + $this->assertInternalType('int', $create_group_contact['added']); + } + + // Use the Contact,get API to retrieve the contact + $contact_get_params = array( + 'id' => $created_contact_id, + 'return' => 'group', + ); + $contact_get = $this->callApiSuccess('Contact', 'get', $contact_get_params); + $this->assertInternalType('array', $contact_get['values'][$created_contact_id]); + $this->assertInternalType('string', $contact_get['values'][$created_contact_id]['groups']); + + // Ensure they are shown as being in each created group. + $contact_group_ids = explode(',', $contact_get['values'][$created_contact_id]['groups']); + foreach ($created_group_ids as $created_group_id) { + $this->assertContains($created_group_id, $contact_group_ids); + } + } + } -- 2.25.1