MDL-74435 user: Trim whitespace from user search fields

This commit is contained in:
Peter Burnett 2022-06-06 18:43:36 +10:00 committed by Simey Lameze
parent a7514f231d
commit 94aa2c78bd
2 changed files with 43 additions and 0 deletions

View File

@ -105,6 +105,12 @@ class user_filter_text extends user_filter_type {
$fieldvalue = null;
if (isset($formdata->$field)) {
$fieldvalue = $formdata->$field;
// If we aren't doing a whitespace comparison, an exact match, trim will give us a better result set.
$trimmed = trim($fieldvalue);
if ($trimmed !== '' && $formdata->$operator != 2) {
$fieldvalue = $trimmed;
}
}
return array('operator' => (int)$formdata->$operator, 'value' => $fieldvalue);
}

View File

@ -0,0 +1,37 @@
@core @core_user
Feature: Trim entered user filters
As a system administrator
I need to be able to filter users ignoring whitespace
So that I can find users even when entered data has surrounding whitespace.
Background:
Given the following "users" exist:
| username | firstname | lastname | email | idnumber |
| teacher1 | Teacher | 1 | teacher@example.com | 0000002 |
| student1 | Student1 | 1 | student1@example.com | 0000003 |
And I log in as "admin"
And I navigate to "Users > Accounts > Browse list of users" in site administration
@javascript
Scenario: Filtering username - with case "contains"
When I set the field "id_realname_op" to "contains"
And I set the field "id_realname" to " Teacher "
And I press "Add filter"
# We should see the teacher user, with the trimmmed string present.
Then I should see "User full name contains \"Teacher\""
And I should see "Teacher" in the "users" "table"
And I should not see "Student1" in the "users" "table"
@javascript
Scenario: Filtering username - with case "contains" and a whitespace string
When I set the field "id_realname_op" to "contains"
And I set the field "id_realname" to " "
And I press "Add filter"
Then I should see "User full name contains \" \""
@javascript
Scenario: Filtering username - with case "is equal to"
When I set the field "id_realname_op" to "is equal to"
And I set the field "id_realname" to " Teacher"
And I press "Add filter"
Then I should see "User full name is equal to \" Teacher\""