Skip to content

Commit

Permalink
CRM-19626 - Event Registration page allows registration even if no nu…
Browse files Browse the repository at this point in the history
…mber (or the number 0) has been entered in any ticket quantity boxes
  • Loading branch information
jitendrapurohit committed Nov 15, 2016
1 parent 853bc63 commit 73dc8be
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 73dc8be

Please sign in to comment.