Merge pull request #10951 from ErikHommel/master
[civicrm-core.git] / tests / phpunit / CRM / Price / Form / FieldTest.php
1 <?php
2
3 class CRM_Price_Form_FieldTest extends CiviUnitTestCase {
4
5 protected $priceFieldValues;
6 protected $visibilityOptionsKeys;
7 protected $visibilityOptions;
8 protected $publicFieldParams;
9 protected $adminFieldParams;
10
11 public function setUp() {
12 parent::setUp();
13
14 $this->visibilityOptionsKeys = CRM_Price_BAO_PriceFieldValue::buildOptions('visibility_id', NULL, array(
15 'labelColumn' => 'name',
16 'flip' => TRUE,
17 ));
18
19 $this->publicFieldParams = $this->initializeFieldParameters(array(
20 'label' => 'Public Price Field',
21 'name' => 'public_price',
22 'visibility_id' => $this->visibilityOptionsKeys['public'],
23 ));
24
25 $this->adminFieldParams = $this->initializeFieldParameters(array(
26 'label' => 'Public Price Field',
27 'name' => 'public_price',
28 'visibility_id' => $this->visibilityOptionsKeys['admin'],
29 ));
30 }
31
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'];
36
37 $form = new CRM_Price_Form_Field();
38 $form->_action = CRM_Core_Action::ADD;
39 $files = array();
40
41 $validationResult = $form->formRule($this->publicFieldParams, $files, $form);
42 $this->assertType('array', $validationResult);
43 $this->assertTrue(array_key_exists('visibility_id', $validationResult));
44 }
45
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'];
50
51 $form = new CRM_Price_Form_Field();
52 $form->_action = CRM_Core_Action::ADD;
53 $files = array();
54
55 $validationResult = $form->formRule($this->adminFieldParams, $files, $form);
56 $this->assertType('array', $validationResult);
57 $this->assertTrue(array_key_exists('visibility_id', $validationResult));
58 }
59
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,
66 'weight' => 1,
67 'options_per_line' => 1,
68 'is_enter_qty' => 1,
69 'financial_type_id' => $this->getFinancialTypeId('Event Fee'),
70 'visibility_id' => $this->visibilityOptionsKeys['public'],
71 );
72
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;
80 }
81
82 return array_merge($defaultParams, $params);
83 }
84
85 }