Merge pull request #15321 from yashodha/dev_1065
[civicrm-core.git] / tests / phpunit / api / v4 / Action / ChainTest.php
1 <?php
2
3 /*
4 +--------------------------------------------------------------------+
5 | CiviCRM version 5 |
6 +--------------------------------------------------------------------+
7 | Copyright CiviCRM LLC (c) 2004-2019 |
8 +--------------------------------------------------------------------+
9 | This file is a part of CiviCRM. |
10 | |
11 | CiviCRM is free software; you can copy, modify, and distribute it |
12 | under the terms of the GNU Affero General Public License |
13 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
14 | |
15 | CiviCRM is distributed in the hope that it will be useful, but |
16 | WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
18 | See the GNU Affero General Public License for more details. |
19 | |
20 | You should have received a copy of the GNU Affero General Public |
21 | License and the CiviCRM Licensing Exception along |
22 | with this program; if not, contact CiviCRM LLC |
23 | at info[AT]civicrm[DOT]org. If you have questions about the |
24 | GNU Affero General Public License or the licensing of CiviCRM, |
25 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
26 +--------------------------------------------------------------------+
27 */
28
29 /**
30 *
31 * @package CRM
32 * @copyright CiviCRM LLC (c) 2004-2019
33 * $Id$
34 *
35 */
36
37
38 namespace api\v4\Action;
39
40 use api\v4\UnitTestCase;
41
42 /**
43 * @group headless
44 */
45 class ChainTest extends UnitTestCase {
46
47 public function testGetActionsWithFields() {
48 $actions = \Civi\Api4\Activity::getActions()
49 ->addChain('fields', \Civi\Api4\Activity::getFields()->setAction('$name'), 'name')
50 ->execute()
51 ->indexBy('name');
52
53 $this->assertEquals('Array', $actions['getActions']['fields']['params']['data_type']);
54 }
55
56 public function testGetEntityWithActions() {
57 $entities = \Civi\Api4\Entity::get()
58 ->addSelect('name')
59 ->setChain([
60 'actions' => ['$name', 'getActions', ['select' => ['name']], 'name'],
61 ])
62 ->execute()
63 ->indexBy('name');
64
65 $this->assertArrayHasKey('replace', $entities['Contact']['actions']);
66 $this->assertArrayHasKey('getLinks', $entities['Entity']['actions']);
67 $this->assertArrayNotHasKey('replace', $entities['Entity']['actions']);
68 }
69
70 public function testContactCreateWithGroup() {
71 $firstName = uniqid('cwtf');
72 $lastName = uniqid('cwtl');
73
74 $contact = \Civi\Api4\Contact::create()
75 ->addValue('first_name', $firstName)
76 ->addValue('last_name', $lastName)
77 ->addChain('group', \Civi\Api4\Group::create()->addValue('title', '$display_name'), 0)
78 ->addChain('add_to_group', \Civi\Api4\GroupContact::create()->addValue('contact_id', '$id')->addValue('group_id', '$group.id'), 0)
79 ->addChain('check_group', \Civi\Api4\GroupContact::get()->addWhere('group_id', '=', '$group.id'))
80 ->execute()
81 ->first();
82
83 $this->assertCount(1, $contact['check_group']);
84 $this->assertEquals($contact['id'], $contact['check_group'][0]['contact_id']);
85 $this->assertEquals($contact['group']['id'], $contact['check_group'][0]['group_id']);
86 }
87
88 }