diff --git a/admin/tool/uploaduser/tests/behat/upload_users.feature b/admin/tool/uploaduser/tests/behat/upload_users.feature index 04fb69b7898..bb4741c8264 100644 --- a/admin/tool/uploaduser/tests/behat/upload_users.feature +++ b/admin/tool/uploaduser/tests/behat/upload_users.feature @@ -67,14 +67,10 @@ Feature: Upload users @javascript Scenario: Upload users with custom profile fields # Create user profile field. - Given I log in as "admin" - And I navigate to "Users > Accounts > User profile fields" in site administration - And I click on "Create a new profile field" "link" - And I click on "Text area" "link" - And I set the following fields to these values: - | Short name | superfield | - | Name | Super field | - And I click on "Save changes" "button" + Given the following "custom profile fields" exist: + | datatype | shortname | name | + | text | superfield | Super field | + And I log in as "admin" # Upload users. When I navigate to "Users > Accounts > Upload users" in site administration And I upload "lib/tests/fixtures/upload_users_profile.csv" file to "File" filemanager diff --git a/availability/condition/profile/tests/behat/availability_profile.feature b/availability/condition/profile/tests/behat/availability_profile.feature index 82fed622c7e..f272a9fc1e0 100644 --- a/availability/condition/profile/tests/behat/availability_profile.feature +++ b/availability/condition/profile/tests/behat/availability_profile.feature @@ -62,15 +62,10 @@ Feature: availability_profile @javascript Scenario: Test with custom user profile field - # Add custom field. - Given I log in as "admin" - And I navigate to "Users > Accounts > User profile fields" in site administration - And I click on "Create a new profile field" "link" - And I click on "Text input" "link" - And I set the following fields to these values: - | Short name | superfield | - | Name | Super field | - And I click on "Save changes" "button" + Given the following "custom profile fields" exist: + | datatype | shortname | name | + | text | superfield | Super field | + And I log in as "admin" # Set field value for user. And I navigate to "Users > Accounts > Browse list of users" in site administration diff --git a/lib/testing/generator/data_generator.php b/lib/testing/generator/data_generator.php index a8727ade1cf..15e63390617 100644 --- a/lib/testing/generator/data_generator.php +++ b/lib/testing/generator/data_generator.php @@ -1315,6 +1315,11 @@ EOD; [$data['categoryid']]) + 1; } + if ($data['datatype'] === 'menu' && isset($data['param1'])) { + // Convert new lines to the proper character. + $data['param1'] = str_replace('\n', "\n", $data['param1']); + } + // Defaults for other values. $defaults = [ 'description' => '', diff --git a/lib/testing/tests/testing_generator_test.php b/lib/testing/tests/testing_generator_test.php index 486886628d3..28af358bfc6 100644 --- a/lib/testing/tests/testing_generator_test.php +++ b/lib/testing/tests/testing_generator_test.php @@ -575,5 +575,12 @@ class testing_generator_test extends \advanced_testcase { $field7 = $generator->create_custom_profile_field( ['datatype' => 'checkbox', 'shortname' => 'areyousure', 'name' => 'Are you sure?']); $this->assertEquals(0, $field7->defaultdata); + + // Check setting options for menu using \n work as expected. + $field8 = $generator->create_custom_profile_field([ + 'datatype' => 'menu', 'shortname' => 'cuisine', 'name' => 'Cuisine', 'param1' => 'French\nChinese\nLebanese', + 'defaultdata' => 'Chinese' + ]); + $this->assertEquals("French\nChinese\nLebanese", $field8->param1); } } diff --git a/user/tests/behat/custom_profile_fields.feature b/user/tests/behat/custom_profile_fields.feature index 12080479e69..abacb27e23b 100644 --- a/user/tests/behat/custom_profile_fields.feature +++ b/user/tests/behat/custom_profile_fields.feature @@ -241,3 +241,27 @@ Feature: Custom profile fields should be visible and editable by those with the And I should not see "notvisible_field_information" And I should not see "Edit profile" + + @javascript + Scenario: Menu profile field's default data works as expected when editing user profile + Given the following "custom profile fields" exist: + | datatype | shortname | name | visible | param1 | defaultdata | + | menu | menufield | Menu field | 2 | OptA\nOptB\nOptC | OptB | + And I log in as "userwithinformation" + When I follow "Profile" in the user menu + And I click on "Edit profile" "link" in the "region-main" "region" + Then the following fields match these values: + | Menu field | OptB | + + @javascript + Scenario: Menu profile field successfully updated when editing user profile + Given the following "custom profile fields" exist: + | datatype | shortname | name | visible | param1 | + | menu | menufield | Menu field | 2 | OptA\nOptB\nOptC | + And I log in as "userwithinformation" + When I follow "Profile" in the user menu + And I click on "Edit profile" "link" in the "region-main" "region" + And I set the following fields to these values: + | Menu field | OptC | + And I click on "Update profile" "button" + Then I should see "OptC"