Skip to content

Commit

Permalink
MDL-74505 Question bank: Update validation editing question form.
Browse files Browse the repository at this point in the history
  • Loading branch information
JBThong committed Jul 5, 2022
1 parent bab7bdc commit 0b31712
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 4 deletions.
1 change: 1 addition & 0 deletions lang/en/question.php
Expand Up @@ -248,6 +248,7 @@
$string['nocate'] = 'No such category {$a}!';
$string['nopermissionadd'] = 'You don\'t have permission to add questions here.';
$string['nopermissionmove'] = 'You don\'t have permission to move questions from here. You must save the question in this category or save it as a new question.';
$string['nopermissionedit'] = 'You don\'t have permission to edit questions from here.';
$string['noprobs'] = 'No problems found in your question database.';
$string['noquestions'] = 'No questions were found that could be exported. Make sure that you have selected a category to export that contains questions.';
$string['noquestionsinfile'] = 'There are no questions in the import file';
Expand Down
28 changes: 28 additions & 0 deletions question/tests/behat/edit_questions.feature
Expand Up @@ -34,6 +34,34 @@ Feature: A teacher can edit questions in the question bank
And I should not see "Test question to be edited"
And "Edited question name" row "Created by" column of "categoryquestions" table should contain "Teacher 1"

Scenario: Edit a previously created question without permission 'moodle/question:moveall' and 'moodle/question:movemine'
Given I log in as "admin"
And the following "permission overrides" exist:
| capability | permission | role | contextlevel | reference |
| moodle/question:movemine | Prevent | editingteacher | System | |
| moodle/question:moveall | Prevent | editingteacher | System | |
When I am on the "Test question to be edited" "core_question > edit" page logged in as "teacher1"
And I set the following fields to these values:
| Question name | Edited question name |
| Question text | Write a lot about what you want |
And I press "id_submitbutton"
Then I should see "Edited question name"
And I should not see "Test question to be edited"
And "Edited question name" row "Created by" column of "categoryquestions" table should contain "Teacher 1"

Scenario: Edit a previously created question without permission 'moodle/question:editall' and 'moodle/question:editmine'
Given I log in as "admin"
And the following "permission overrides" exist:
| capability | permission | role | contextlevel | reference |
| moodle/question:editmine | Prevent | editingteacher | System | |
| moodle/question:editall | Prevent | editingteacher | System | |
When I am on the "Test question to be edited" "core_question > edit" page logged in as "teacher1"
And I set the following fields to these values:
| Question name | Edited question name |
| Question text | Write a lot about what you want |
And I press "id_submitbutton"
Then I should see "You don't have permission to edit questions from here."

Scenario: Editing a question can be cancelled
When I choose "Edit question" action for "Test question to be edited" in the question bank
And I set the field "Question name" to "Edited question name"
Expand Down
8 changes: 4 additions & 4 deletions question/type/edit_question_form.php
Expand Up @@ -846,11 +846,11 @@ public function validation($fromform, $files) {
global $DB;

$errors = parent::validation($fromform, $files);

// Make sure that the user can edit the question.
if (empty($fromform['makecopy']) && isset($this->question->id)
&& ($this->question->formoptions->canedit ||
$this->question->formoptions->cansaveasnew)
&& empty($fromform['usecurrentcat']) && !$this->question->formoptions->canmove) {
$errors['currentgrp'] = get_string('nopermissionmove', 'question');
&& !$this->question->formoptions->canedit) {
$errors['currentgrp'] = get_string('nopermissionedit', 'question');
}

// Category.
Expand Down

0 comments on commit 0b31712

Please sign in to comment.