Skip to content

Commit

Permalink
Merge pull request #9388 from jitendrapurohit/CRM-19626
Browse files Browse the repository at this point in the history
CRM-19626: Event Registration page allows registration even if no nu…
  • Loading branch information
Yashodha Chaku authored Nov 16, 2016
2 parents 1d3a357 + 73dc8be commit ecb3ba9
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 2 deletions.
9 changes: 7 additions & 2 deletions CRM/Event/Form/Registration.php
Original file line number Diff line number Diff line change
Expand Up @@ -1322,7 +1322,7 @@ public static function validatePriceSet(&$form, $params) {
$feeBlock = $priceSetDetails['fields'];
}

$optionMaxValues = $fieldSelected = array();
$optionMaxValues = $fieldSelected = $priceFieldCheck = array();
foreach ($params as $pNum => $values) {
if (!is_array($values) || $values == 'skip') {
continue;
Expand All @@ -1345,6 +1345,11 @@ public static function validatePriceSet(&$form, $params) {
continue;
}

// Make an array for selected price fields.
if (!empty($priceFieldId) && !empty($value)) {
$priceFieldCheck[] = $priceFieldId;
}

$fieldSelected[$pNum] = TRUE;

if (!$hasOptMaxValue || !is_array($value)) {
Expand Down Expand Up @@ -1374,7 +1379,7 @@ public static function validatePriceSet(&$form, $params) {
}

//validate for price field selection.
if (empty($fieldSelected[$pNum])) {
if (empty($fieldSelected[$pNum]) || empty($priceFieldCheck)) {
$errors[$pNum]['_qf_default'] = ts('Select at least one option from Event Fee(s).');
}
}
Expand Down
74 changes: 74 additions & 0 deletions tests/phpunit/CRM/Event/Form/RegistrationTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
<?php
/*
+--------------------------------------------------------------------+
| CiviCRM version 4.7 |
+--------------------------------------------------------------------+
| Copyright CiviCRM LLC (c) 2004-2016 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
| CiviCRM is free software; you can copy, modify, and distribute it |
| under the terms of the GNU Affero General Public License |
| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
| |
| CiviCRM is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the GNU Affero General Public License for more details. |
| |
| You should have received a copy of the GNU Affero General Public |
| License and the CiviCRM Licensing Exception along |
| with this program; if not, contact CiviCRM LLC |
| at info[AT]civicrm[DOT]org. If you have questions about the |
| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
*/

/**
* Class CRM_Event_Form_RegistrationTest
* @group headless
*/
class CRM_Event_Form_RegistrationTest extends CiviUnitTestCase {

public function setUp() {
parent::setUp();
}


/**
* CRM-19626 - Test validatePriceSet() function
*/
public function testValidatePriceSet() {
$form = new CRM_Event_Form_Registration();
$form->controller = new CRM_Core_Controller();

$feeAmt = 100;
$priceSetId = $this->eventPriceSetCreate($feeAmt);
$priceSet = current(CRM_Price_BAO_PriceSet::getSetDetail($priceSetId));
$form->_feeBlock = $priceSet['fields'];
$priceField = $this->callAPISuccess('PriceField', 'get', array('price_set_id' => $priceSetId));
$params = array(
array(
'priceSetId' => $priceSetId,
),
);
// Check empty values for price fields.
foreach (array_keys($priceField['values']) as $fieldId) {
$params[0]['price_' . $fieldId] = NULL;
}
$form->set('priceSetId', $priceSetId);
$form->set('priceSet', $priceSet);
$form->set('name', 'CRM_Event_Form_Registration');
$errors = CRM_Event_Form_Registration::validatePriceSet($form, $params);

//Assert the validation Error.
$expectedResult = array(
array(
'_qf_default' => 'Select at least one option from Event Fee(s).',
),
);
$this->checkArrayEquals($expectedResult, $errors);
}

}

0 comments on commit ecb3ba9

Please sign in to comment.