Merge pull request #15322 from alifrumin/removePrintIcon
[civicrm-core.git] / tests / phpunit / api / v4 / Utils / ArrayInsertionServiceTest.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\Utils;
39
40 use Civi\Api4\Utils\ArrayInsertionUtil;
41 use api\v4\UnitTestCase;
42
43 /**
44 * @group headless
45 */
46 class ArrayInsertionServiceTest extends UnitTestCase {
47
48 public function testInsertWillWork() {
49 $arr = [];
50 $path = ['foo' => FALSE, 'bar' => FALSE];
51 $inserter = new ArrayInsertionUtil();
52 $inserter::insert($arr, $path, ['LALA']);
53
54 $expected = [
55 'foo' => [
56 'bar' => 'LALA',
57 ],
58 ];
59
60 $this->assertEquals($expected, $arr);
61 }
62
63 public function testInsertionOfContactEmailLocation() {
64 $contacts = [
65 [
66 'id' => 1,
67 'first_name' => 'Jim',
68 ],
69 [
70 'id' => 2,
71 'first_name' => 'Karen',
72 ],
73 ];
74 $emails = [
75 [
76 'email' => 'jim@jim.com',
77 'id' => 2,
78 '_parent_id' => 1,
79 ],
80 ];
81 $locationTypes = [
82 [
83 'name' => 'Home',
84 'id' => 3,
85 '_parent_id' => 2,
86 ],
87 ];
88
89 $emailPath = ['emails' => TRUE];
90 $locationPath = ['emails' => TRUE, 'location' => FALSE];
91 $inserter = new ArrayInsertionUtil();
92
93 foreach ($contacts as &$contact) {
94 $inserter::insert($contact, $emailPath, $emails);
95 $inserter::insert($contact, $locationPath, $locationTypes);
96 }
97
98 $locationType = $contacts[0]['emails'][0]['location']['name'];
99 $this->assertEquals('Home', $locationType);
100 }
101
102 }