Merge pull request #23283 from eileenmcnaughton/import_saved_map
[civicrm-core.git] / tests / phpunit / api / v4 / Custom / ExportCustomGroupTest.php
CommitLineData
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
20namespace api\v4\Custom;
21
22use Civi\Api4\CustomField;
23use Civi\Api4\CustomGroup;
24
25/**
26 * @group headless
27 */
28class 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}