From 7b10f859decdb5d97ffe97e647db52f29f4661f8 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Thu, 2 Jun 2011 08:45:48 +0200 Subject: [ticket/10005] Add validation of dropdown custom profile field values PHPBB3-10005 --- tests/profile/custom_test.php | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 tests/profile/custom_test.php (limited to 'tests/profile/custom_test.php') diff --git a/tests/profile/custom_test.php b/tests/profile/custom_test.php new file mode 100644 index 0000000000..06926d4af6 --- /dev/null +++ b/tests/profile/custom_test.php @@ -0,0 +1,52 @@ +createXMLDataSet(dirname(__FILE__).'/fixtures/profile_fields.xml'); + } + + static public function dropdownFields() + { + return array( + // novalue, required, value, expected + array(1, 1, '0', 'FIELD_INVALID_VALUE'), + array(1, 1, '1', 'FIELD_REQUIRED'), + array(1, 1, '2', false), + array(1, 0, '0', 'FIELD_INVALID_VALUE'), + array(1, 0, '1', false), + array(1, 0, '2', false), + ); + } + + /** + * @dataProvider dropdownFields + */ + public function test_dropdown_validate($field_novalue, $field_required, $field_value, $expected) + { + global $db; + $db = $this->new_dbal(); + + $field_data = array( + 'field_id' => 1, + 'lang_id' => 1, + 'field_novalue' => $field_novalue, + 'field_required' => $field_required, + ); + + $cp = new custom_profile; + $result = $cp->validate_profile_field(FIELD_DROPDOWN, &$field_value, $field_data); + + $this->assertEquals($expected, $result); + } +} -- cgit v1.2.1 From a2b6605ce8d5d4c156fda44c5fc44b11aae22b02 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Fri, 3 Jun 2011 03:12:13 +0200 Subject: [ticket/10005] Add description to test cases PHPBB3-10005 --- tests/profile/custom_test.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'tests/profile/custom_test.php') diff --git a/tests/profile/custom_test.php b/tests/profile/custom_test.php index 06926d4af6..0e0a851243 100644 --- a/tests/profile/custom_test.php +++ b/tests/profile/custom_test.php @@ -19,20 +19,23 @@ class phpbb_profile_custom_test extends phpbb_database_test_case static public function dropdownFields() { return array( - // novalue, required, value, expected - array(1, 1, '0', 'FIELD_INVALID_VALUE'), - array(1, 1, '1', 'FIELD_REQUIRED'), - array(1, 1, '2', false), - array(1, 0, '0', 'FIELD_INVALID_VALUE'), - array(1, 0, '1', false), - array(1, 0, '2', false), + // 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_novalue, $field_required, $field_value, $expected) + public function test_dropdown_validate($field_required, $field_value, $expected, $description) { global $db; $db = $this->new_dbal(); @@ -40,13 +43,13 @@ class phpbb_profile_custom_test extends phpbb_database_test_case $field_data = array( 'field_id' => 1, 'lang_id' => 1, - 'field_novalue' => $field_novalue, + '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); + $this->assertEquals($expected, $result, $description); } } -- cgit v1.2.1