1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-24 12:03:21 +01:00

[ticket/11201] Fix dropdown tests

The error message is now already the language string including the fieldname
and not the language key anymore.

PHPBB3-11201
This commit is contained in:
Joas Schilling 2014-01-15 12:36:54 +01:00
parent 7fd5f16fa2
commit 1dbc2d6218
3 changed files with 73 additions and 60 deletions

View File

@ -79,16 +79,16 @@ class lang_helper
*/ */
public function is_set($field_id, $lang_id = null, $field_value = null) public function is_set($field_id, $lang_id = null, $field_value = null)
{ {
$is_set = isset($this->lang_helper->options_lang[$field_id]); $is_set = isset($this->options_lang[$field_id]);
if ($is_set && (!is_null($lang_id) || !is_null($field_value))) if ($is_set && (!is_null($lang_id) || !is_null($field_value)))
{ {
$is_set = isset($this->lang_helper->options_lang[$field_id][$lang_id]); $is_set = isset($this->options_lang[$field_id][$lang_id]);
} }
if ($is_set && !is_null($field_value)) if ($is_set && !is_null($field_value))
{ {
$is_set = isset($this->lang_helper->options_lang[$field_id][$lang_id][$field_value]); $is_set = isset($this->options_lang[$field_id][$lang_id][$field_value]);
} }
return $is_set; return $is_set;
@ -106,9 +106,9 @@ class lang_helper
{ {
if (!is_null($field_value)) if (!is_null($field_value))
{ {
return $this->lang_helper->options_lang[$field_id][$lang_id]; return $this->options_lang[$field_id][$lang_id];
} }
return $this->lang_helper->options_lang[$field_id][$lang_id][$field_value]; return $this->options_lang[$field_id][$lang_id][$field_value];
} }
} }

View File

@ -0,0 +1,68 @@
<?php
/**
*
* @package testing
* @copyright (c) 2011 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
class phpbb_profile_custom_test extends phpbb_database_test_case
{
public function getDataSet()
{
return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/profile_fields.xml');
}
static public function dropdown_fields()
{
return array(
// note, there is an offset of 1 between option_id (0-indexed)
// in the database and values (1-indexed) to avoid problems with
// transmitting 0 in an HTML form
// required, value, expected
array(1, '0', 'FIELD_INVALID_VALUE-field', 'Required field should throw error for out-of-range value'),
array(1, '1', 'FIELD_REQUIRED-field', 'Required field should throw error for default value'),
array(1, '2', false, 'Required field should accept non-default value'),
array(0, '0', 'FIELD_INVALID_VALUE-field', 'Optional field should throw error for out-of-range value'),
array(0, '1', false, 'Optional field should accept default value'),
array(0, '2', false, 'Optional field should accept non-default value'),
);
}
/**
* @dataProvider dropdown_fields
*/
public function test_dropdown_validate($field_required, $field_value, $expected, $description)
{
global $db;
$db = $this->new_dbal();
$field_data = array(
'field_id' => 1,
'lang_id' => 1,
'lang_name' => 'field',
'field_novalue' => 1,
'field_required' => $field_required,
);
$user = $this->getMock('\phpbb\user');
$user->expects($this->any())
->method('lang')
->will($this->returnCallback(array($this, 'return_callback_implode')));
$cp = new \phpbb\profilefields\type\type_dropdown(
new \phpbb\profilefields\lang_helper($db),
$this->getMock('\phpbb\request\request'),
$this->getMock('\phpbb\template\template'),
$user
);
$result = $cp->validate_profile_field($field_value, $field_data);
$this->assertEquals($expected, $result, $description);
}
public function return_callback_implode()
{
return implode('-', func_get_args());
}
}

View File

@ -1,55 +0,0 @@
<?php
/**
*
* @package testing
* @copyright (c) 2011 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
require_once dirname(__FILE__) . '/../../phpBB/includes/functions_profile_fields.php';
class phpbb_profile_custom_test extends phpbb_database_test_case
{
public function getDataSet()
{
return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/profile_fields.xml');
}
static public function dropdownFields()
{
return array(
// note, there is an offset of 1 between option_id (0-indexed)
// in the database and values (1-indexed) to avoid problems with
// transmitting 0 in an HTML form
// required, value, expected
array(1, '0', 'FIELD_INVALID_VALUE', 'Required field should throw error for out-of-range value'),
array(1, '1', 'FIELD_REQUIRED', 'Required field should throw error for default value'),
array(1, '2', false, 'Required field should accept non-default value'),
array(0, '0', 'FIELD_INVALID_VALUE', 'Optional field should throw error for out-of-range value'),
array(0, '1', false, 'Optional field should accept default value'),
array(0, '2', false, 'Optional field should accept non-default value'),
);
}
/**
* @dataProvider dropdownFields
*/
public function test_dropdown_validate($field_required, $field_value, $expected, $description)
{
global $db;
$db = $this->new_dbal();
$field_data = array(
'field_id' => 1,
'lang_id' => 1,
'field_novalue' => 1,
'field_required' => $field_required,
);
$cp = new custom_profile;
$result = $cp->validate_profile_field(FIELD_DROPDOWN, $field_value, $field_data);
$this->assertEquals($expected, $result, $description);
}
}