3 class CRM_Price_Form_FieldTest
extends CiviUnitTestCase
{
5 protected $priceFieldValues;
6 protected $visibilityOptionsKeys;
7 protected $visibilityOptions;
8 protected $publicFieldParams;
9 protected $adminFieldParams;
11 public function setUp() {
14 $this->visibilityOptionsKeys
= CRM_Price_BAO_PriceFieldValue
::buildOptions('visibility_id', NULL, array(
15 'labelColumn' => 'name',
19 $this->publicFieldParams
= $this->initializeFieldParameters(array(
20 'label' => 'Public Price Field',
21 'name' => 'public_price',
22 'visibility_id' => $this->visibilityOptionsKeys
['public'],
25 $this->adminFieldParams
= $this->initializeFieldParameters(array(
26 'label' => 'Public Price Field',
27 'name' => 'public_price',
28 'visibility_id' => $this->visibilityOptionsKeys
['admin'],
32 public function testPublicFieldWithOnlyAdminOptionsIsNotAllowed() {
33 $this->publicFieldParams
['option_label'][1] = 'Admin Price';
34 $this->publicFieldParams
['option_amount'][1] = 10;
35 $this->publicFieldParams
['option_visibility_id'][1] = $this->visibilityOptionsKeys
['admin'];
37 $form = new CRM_Price_Form_Field();
38 $form->_action
= CRM_Core_Action
::ADD
;
41 $validationResult = $form->formRule($this->publicFieldParams
, $files, $form);
42 $this->assertType('array', $validationResult);
43 $this->assertTrue(array_key_exists('visibility_id', $validationResult));
46 public function testAdminFieldDoesNotAllowPublicOptions() {
47 $this->adminFieldParams
['option_label'][1] = 'Admin Price';
48 $this->adminFieldParams
['option_amount'][1] = 10;
49 $this->adminFieldParams
['option_visibility_id'][1] = $this->visibilityOptionsKeys
['public'];
51 $form = new CRM_Price_Form_Field();
52 $form->_action
= CRM_Core_Action
::ADD
;
55 $validationResult = $form->formRule($this->adminFieldParams
, $files, $form);
56 $this->assertType('array', $validationResult);
57 $this->assertTrue(array_key_exists('visibility_id', $validationResult));
60 private function initializeFieldParameters($params) {
61 $defaultParams = array(
62 'label' => 'Price Field',
63 'name' => CRM_Utils_String
::titleToVar('Price Field'),
64 'html_type' => 'Select',
65 'is_display_amounts' => 1,
67 'options_per_line' => 1,
69 'financial_type_id' => $this->getFinancialTypeId('Event Fee'),
70 'visibility_id' => $this->visibilityOptionsKeys
['public'],
73 for ($index = 1; $index <= CRM_Price_Form_Field
::NUM_OPTION
; $index++
) {
74 $defaultParams['option_label'][$index] = NULL;
75 $defaultParams['option_value'][$index] = NULL;
76 $defaultParams['option_name'][$index] = NULL;
77 $defaultParams['option_weight'][$index] = NULL;
78 $defaultParams['option_amount'][$index] = NULL;
79 $defaultParams['option_visibility_id'][$index] = NULL;
82 return array_merge($defaultParams, $params);