Commit | Line | Data |
---|---|---|
7237222f TO |
1 | <?php |
2 | ||
3 | class CRM_Price_Form_OptionTest extends CiviUnitTestCase { | |
4 | ||
5 | protected $priceFieldValues; | |
f78dbf0b | 6 | |
7237222f | 7 | protected $visibilityOptionsKeys; |
f78dbf0b | 8 | |
7237222f | 9 | protected $visibilityOptions; |
f78dbf0b | 10 | |
7237222f | 11 | protected $publicValue; |
f78dbf0b | 12 | |
7237222f TO |
13 | protected $adminValue; |
14 | ||
15 | public function setUp() { | |
16 | parent::setUp(); | |
17 | ||
39868387 | 18 | $this->visibilityOptions = CRM_Core_PseudoConstant::get('CRM_Price_BAO_PriceFieldValue', 'visibility_id', [ |
7237222f | 19 | 'labelColumn' => 'name', |
f78dbf0b | 20 | ]); |
39868387 | 21 | $this->visibilityOptionsKeys = CRM_Core_PseudoConstant::get('CRM_Price_BAO_PriceFieldValue', 'visibility_id', [ |
7237222f TO |
22 | 'labelColumn' => 'name', |
23 | 'flip' => TRUE, | |
f78dbf0b | 24 | ]); |
7237222f TO |
25 | } |
26 | ||
27 | public function testChangingUniquePublicOptionOnPublicFieldIsNotAllowed() { | |
f78dbf0b | 28 | $this->setUpPriceSet([ |
7237222f TO |
29 | 'html_type' => 'Select', |
30 | 'visibility_id' => $this->visibilityOptionsKeys['public'], | |
f78dbf0b | 31 | 'option_label' => ['1' => 'Price Field 1', '2' => 'Price Field 2'], |
32 | 'option_value' => ['1' => 100, '2' => 200], | |
33 | 'option_name' => ['1' => 'Price Field 1', '2' => 'Price Field 2'], | |
34 | 'option_weight' => ['1' => 1, '2' => 2], | |
35 | 'option_amount' => ['1' => 100, '2' => 200], | |
36 | 'option_visibility_id' => [1 => $this->visibilityOptionsKeys['public'], 2 => $this->visibilityOptionsKeys['admin']], | |
37 | ]); | |
38 | ||
39 | $params = [ | |
7237222f TO |
40 | 'fieldId' => $this->publicValue['price_field_id'], |
41 | 'optionId' => $this->publicValue['id'], | |
42 | 'visibility_id' => $this->visibilityOptionsKeys['admin'], | |
f78dbf0b | 43 | ]; |
7237222f TO |
44 | |
45 | $form = new CRM_Price_Form_Option(); | |
46 | $form->_action = CRM_Core_Action::ADD; | |
f78dbf0b | 47 | $files = []; |
7237222f TO |
48 | |
49 | $validationResult = $form->formRule($params, $files, $form); | |
50 | $this->assertType('array', $validationResult); | |
51 | $this->assertTrue(array_key_exists('visibility_id', $validationResult)); | |
52 | } | |
53 | ||
54 | public function testAddingPublicOptionToAdminFieldIsNotAllowed() { | |
f78dbf0b | 55 | $this->setUpPriceSet([ |
7237222f TO |
56 | 'html_type' => 'Select', |
57 | 'visibility_id' => $this->visibilityOptionsKeys['admin'], | |
f78dbf0b | 58 | 'option_label' => ['1' => 'Price Field 1', '2' => 'Price Field 2'], |
59 | 'option_value' => ['1' => 100, '2' => 200], | |
60 | 'option_name' => ['1' => 'Price Field 1', '2' => 'Price Field 2'], | |
61 | 'option_weight' => ['1' => 1, '2' => 2], | |
62 | 'option_amount' => ['1' => 100, '2' => 200], | |
63 | 'option_visibility_id' => [1 => $this->visibilityOptionsKeys['admin'], 2 => $this->visibilityOptionsKeys['admin']], | |
64 | ]); | |
65 | ||
66 | $params = [ | |
7237222f TO |
67 | 'fieldId' => $this->adminValue['price_field_id'], |
68 | 'optionId' => $this->adminValue['id'], | |
69 | 'visibility_id' => $this->visibilityOptionsKeys['public'], | |
f78dbf0b | 70 | ]; |
7237222f TO |
71 | |
72 | $form = new CRM_Price_Form_Option(); | |
73 | $form->_action = CRM_Core_Action::ADD; | |
f78dbf0b | 74 | $files = []; |
7237222f TO |
75 | |
76 | $validationResult = $form->formRule($params, $files, $form); | |
77 | $this->assertType('array', $validationResult); | |
78 | $this->assertTrue(array_key_exists('visibility_id', $validationResult)); | |
79 | } | |
80 | ||
81 | private function setUpPriceSet($params) { | |
82 | $priceSetCreateResult = $this->createPriceSet('contribution_page', NULL, $params); | |
83 | ||
84 | $this->priceFieldValues = $priceSetCreateResult['values']; | |
85 | ||
86 | foreach ($this->priceFieldValues as $currentField) { | |
87 | if ($this->visibilityOptions[$currentField['visibility_id']] == 'public') { | |
88 | $this->publicValue = $currentField; | |
89 | } | |
90 | else { | |
91 | $this->adminValue = $currentField; | |
92 | } | |
93 | } | |
94 | } | |
95 | ||
96 | } |