Commit | Line | Data |
---|---|---|
ca2d686d CW |
1 | <?php |
2 | ||
3 | /* | |
4 | +--------------------------------------------------------------------+ | |
5 | | Copyright CiviCRM LLC. All rights reserved. | | |
6 | | | | |
7 | | This work is published under the GNU AGPLv3 license with some | | |
8 | | permitted exceptions and without any warranty. For full license | | |
9 | | and copyright information, see https://civicrm.org/licensing | | |
10 | +--------------------------------------------------------------------+ | |
11 | */ | |
12 | ||
13 | /** | |
14 | * | |
15 | * @package CRM | |
16 | * @copyright CiviCRM LLC https://civicrm.org/licensing | |
17 | */ | |
18 | ||
19 | ||
20 | namespace api\v4\Custom; | |
21 | ||
22 | use Civi\Api4\CustomField; | |
23 | use Civi\Api4\CustomGroup; | |
24 | ||
25 | /** | |
26 | * @group headless | |
27 | */ | |
28 | class ExportCustomGroupTest extends CustomTestBase { | |
29 | ||
30 | public function testExportCustomGroupWithFieldOptions() { | |
31 | $optionValues = ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue']; | |
32 | ||
33 | $customGroup = CustomGroup::create(FALSE) | |
34 | ->addValue('title', 'exportTest') | |
35 | ->addValue('extends', 'Individual') | |
36 | ->addChain('field1', CustomField::create() | |
37 | ->addValue('custom_group_id', '$id') | |
38 | ->addValue('option_values', $optionValues) | |
39 | ->addValue('label', 'Color') | |
40 | ->addValue('html_type', 'Select'), 0 | |
41 | )->addChain('field2', CustomField::create() | |
42 | ->addValue('custom_group_id', '$id') | |
43 | ->addValue('data_type', 'Boolean') | |
44 | ->addValue('label', 'On Off') | |
45 | ->addValue('html_type', 'CheckBox'), 0 | |
46 | )->execute()->single(); | |
47 | ||
48 | // Add a 3rd fields that shares the same option group as field1 | |
49 | CustomField::create(FALSE) | |
50 | ->addValue('custom_group_id', $customGroup['id']) | |
51 | ->addValue('label', 'Color2') | |
52 | ->addValue('html_type', 'Select') | |
53 | ->addValue('option_group_id', $customGroup['field1']['option_group_id']) | |
54 | ->execute(); | |
55 | ||
56 | $export = CustomGroup::export(FALSE) | |
57 | ->setId($customGroup['id']) | |
58 | ->execute(); | |
59 | ||
60 | // 1 custom group + 3 fields + 1 option group + 3 options | |
61 | $this->assertCount(8, $export); | |
62 | // 2 fields share an option group | |
63 | $this->assertEquals($export[5]['params']['values']['option_group_id.name'], $export[7]['params']['values']['option_group_id.name']); | |
64 | // Option group name matches | |
65 | $this->assertEquals($export[5]['params']['values']['option_group_id.name'], $export[1]['params']['values']['name']); | |
66 | // Should be only name, not id | |
67 | $this->assertArrayNotHasKey('option_group_id', $export[5]['params']['values']); | |
68 | $this->assertArrayNotHasKey('option_group_id.name', $export[6]['params']['values']); | |
69 | $this->assertArrayNotHasKey('option_group_id', $export[6]['params']['values']); | |
70 | $this->assertArrayNotHasKey('option_values', $export[6]['params']['values']); | |
71 | } | |
72 | ||
73 | } |