Merge branch 'MDL-72879-master-enfix' of git://github.com/mudrd8mz/moodle

This commit is contained in:
Eloy Lafuente (stronk7) 2021-10-27 22:12:11 +02:00
commit 4f271297ce
37 changed files with 67 additions and 68 deletions

View File

@ -32,7 +32,7 @@ $string['cachedef_stepdata'] = 'List of user tour steps';
$string['cachedef_tourdata'] = 'List of enabled user tours information which is fetched on every page';
$string['description'] = 'Description';
$string['displaystepnumbers'] = 'Display step numbers';
$string['displaystepnumbers_help'] = 'Whether the number of steps remaining is displayed within the tour navigation';
$string['displaystepnumbers_help'] = 'Whether to display a step number count e.g. 1/4, 2/4 etc. to indicate the length of the user tour.';
$string['confirmstepremovalquestion'] = 'Are you sure that you wish to remove this step?';
$string['confirmstepremovaltitle'] = 'Confirm step removal';
$string['confirmtourremovalquestion'] = 'Are you sure that you wish to remove this tour?';
@ -52,7 +52,7 @@ $string['editstep'] = 'Editing "{$a}"';
$string['tourisenabled'] = 'Tour is enabled';
$string['enabled'] = 'Enabled';
$string['endtourlabel'] = 'End tour button\'s label';
$string['endtourlabel_help'] = 'You can optionally specify a custom label for the end tour button. The default label is "Got it!" for single-step, and "End tour" for multiple-step tours.';
$string['endtourlabel_help'] = 'You can optionally specify a custom label for the end tour button. The default label is "Got it" for single-step, and "End tour" for multiple-step tours.';
$string['event_tour_started'] = 'Tour started';
$string['event_tour_reset'] = 'Tour reset';
$string['event_tour_ended'] = 'Tour ended';
@ -135,7 +135,7 @@ $string['tourlist_explanation'] = 'You can create as many tours as you like and
$string['tours'] = 'Tours';
$string['pausetour'] = 'Pause';
$string['resumetour'] = 'Resume';
$string['endonesteptour'] = 'Got it!';
$string['endonesteptour'] = 'Got it';
$string['endtour'] = 'End tour';
$string['orphan'] = 'Show if target not found';
$string['orphan_help'] = 'Show the step if the target could not be found on the page.';

View File

@ -43,7 +43,7 @@
Example context (json):
{
"name" : "tour_activity_completion",
"endtourlabel" : "Got it!",
"endtourlabel" : "Got it",
"steps": [
{
"stepid": 10,

View File

@ -37,7 +37,7 @@ Feature: Apply tour filters to a tour
And I log in as "student1"
And I am on "Course 1" course homepage
And I should see "Welcome to your course tour."
And I click on "Got it!" "button"
And I click on "Got it" "button"
And I log out
And I log in as "teacher1"
And I am on "Course 1" course homepage

View File

@ -38,7 +38,7 @@ Feature: Steps can be navigated within a tour
And I follow "Dashboard" in the user menu
And I wait until the page is ready
And I should see "This is the calendar block"
Then I should see "Got it!"
Then I should see "Got it"
@javascript
Scenario: End tour button text for multiple step tours

View File

@ -1149,11 +1149,11 @@ $string['searchhideallcategory'] = 'Hide All results category';
$string['searchhideallcategory_desc'] = 'If checked, the category with all results will be hidden on the search result screen.';
$string['searchdefaultcategory'] = 'Default search category';
$string['searchdefaultcategory_desc'] = 'Results from the selected search area category will be displayed by default.';
$string['searchtopresults'] = 'Top Results';
$string['searchtopresults'] = 'Top results';
$string['searchmaxtopresults'] = 'Maximum top results';
$string['searchmaxtopresults_desc'] = 'Specify the maximum number of top results';
$string['searchmaxtopresults_desc'] = 'The maximum number of highest-ranked results to be displayed above the search results for course content, courses and users.';
$string['searchteacherroles'] = 'Teacher roles';
$string['searchteacherroles_desc'] = 'Please select all teacher roles for indexing course teacher';
$string['searchteacherroles_desc'] = 'Select all roles that make users with the role ranker higher in search results.';
$string['searchallavailablecoursesdesc'] = 'If set to search within enrolled courses only, course information (name and summary) and course content will only be searched in courses which the user is enrolled in. Otherwise, course information and course content will be searched in all courses which the user can access, such as courses with guest access enabled.';
$string['searchincludeallcourses'] = 'Include all visible courses';
$string['searchincludeallcourses_desc'] = 'If enabled, search results will include course information (name and summary) of courses which are visible to the user, even if they don\'t have access to the course content.';

View File

@ -56,15 +56,15 @@ $string['fileinfectedname'] = 'File infected';
$string['notifyemail_help'] = 'The email address for notifications of when a virus is detected. If left blank, then all site administrators will be sent notifications.';
$string['notifyemail'] = 'Antivirus alert notification email';
$string['notifylevel_help'] = 'The different levels of information you want to be notified about';
$string['notifylevel'] = 'Notify Level';
$string['notifylevelfound'] = 'Notify when threats detected';
$string['notifylevelerror'] = 'Notify on threats and scan issues';
$string['notifylevel'] = 'Notification level';
$string['notifylevelfound'] = 'Detected threats only';
$string['notifylevelerror'] = 'Detected threats and scanner errors';
$string['privacy:metadata'] = 'The Antivirus system does not store any personal data.';
$string['quarantinedfiles'] = 'Antivirus quarantined files';
$string['quarantinedisabled'] = 'Quarantine is disabled. The file is not stored.';
$string['quarantinetime_desc'] = 'Quarantined files older than the specified period will be removed.';
$string['quarantinetime'] = 'Maximum quarantine time';
$string['threshold_desc'] = 'Controls how far back to check against previous results for errors/warnings/etc, which can be viewed here ({$a}).';
$string['threshold_desc'] = 'How far back to check against previous results for errors etc. as reported in {$a}.';
$string['threshold'] = 'Threshold for status check';
$string['taskcleanup'] = 'Clean up quarantined files.';
$string['unknown'] = 'Unknown';

View File

@ -42,7 +42,7 @@ $string['deletecheck'] = 'Delete {$a} block?';
$string['deletecheck_modal'] = 'Delete block?';
$string['deleteblock'] = 'Delete {$a} block';
$string['deleteblockcheck'] = 'Are you sure that you want to delete this block titled {$a}?';
$string['deleteblockinprogress'] = 'Block {$a} is currently being removed from this page';
$string['deleteblockinprogress'] = 'The block {$a} is currently being removed from this page.';
$string['deleteblockwarning'] = '<p>You are about to delete a block that appears elsewhere.</p><p>Original block location: {$a->location}<br />Display on page types: {$a->pagetype}</p><p>Are you sure you want to continue?</p>';
$string['hideblock'] = 'Hide {$a} block';
$string['hidepanel'] = 'Hide panel';

View File

@ -53,7 +53,7 @@ $string['outputbuffer'] = 'Output buffer';
$string['phpvaroff'] = 'The PHP server variable \'{$a->name}\' should be Off - {$a->link}';
$string['phpvaron'] = 'The PHP server variable \'{$a->name}\' is not turned On - {$a->link}';
$string['reactive_instances'] = 'Reactive instances:';
$string['reactive_noinstances'] = 'this page has no reactive instances';
$string['reactive_noinstances'] = 'This page has no reactive instances.';
$string['reactive_pin'] = 'Pin';
$string['reactive_unpin'] = 'Unpin';
$string['reactive_highlightoff'] = 'Highlight OFF';
@ -62,7 +62,7 @@ $string['reactive_readmodeon'] = 'Read mode ON';
$string['reactive_readmodeoff'] = 'Read mode OFF';
$string['reactive_resetpanel'] = 'Reset panel';
$string['reactive_statedata'] = 'State data';
$string['reactive_saveingwarning'] = 'Edit the state can cause inexpected results';
$string['reactive_saveingwarning'] = 'Warning: Editing the state can cause unexpected results.';
$string['sessionmissing'] = '{$a} object missing from session';
$string['sqlrelyonobsoletetable'] = 'This SQL relies on obsolete table(s): {$a}! Your code must be fixed by a developer.';
$string['stacktrace'] = 'Stack trace';

View File

@ -703,7 +703,7 @@ $string['recovergradesdefault_help'] = 'By default recover old grades when re-en
$string['refreshpreview'] = 'Refresh preview';
$string['regradeanyway'] = 'Regrade anyway';
$string['removeallcoursegrades'] = 'Delete all grades';
$string['removeallcoursegrades_help'] = 'If ticked, all grade items which were manually added to the gradebook will be deleted, together with grades and data on overridden, excluded, hidden and locked grades. Only grade items associated with activities will remain.';
$string['removeallcoursegrades_help'] = 'If ticked, all grade items and grades that were manually added to the gradebook will be deleted, as well as data on overridden, excluded, hidden and locked grades. Only grade items and grades associated with activities will remain.';
$string['removeallcourseitems'] = 'Delete all items and categories';
$string['removeallcourseitems_help'] = 'If ticked, all categories and grade items which were manually added to the gradebook will be deleted, together with grades and data on overridden, excluded, hidden and locked grades. Only grade items associated with activities will remain.';
$string['report'] = 'Report';

View File

@ -71,9 +71,9 @@ $string['editreportdetails'] = 'Edit report details';
$string['editreportname'] = 'Edit report name';
$string['entitycourse'] = 'Course';
$string['entityuser'] = 'User';
$string['errorreportcreate'] = 'You can not create a new report';
$string['errorreportedit'] = 'You can not edit this report';
$string['errorreportview'] = 'You can not view this report';
$string['errorreportcreate'] = 'You cannot create a new report';
$string['errorreportedit'] = 'You cannot edit this report';
$string['errorreportview'] = 'You cannot view this report';
$string['errorsourceinvalid'] = 'Could not find valid report source';
$string['errorsourceunavailable'] = 'Report source is not available';
$string['filteradded'] = 'Added filter \'{$a}\'';
@ -144,7 +144,7 @@ $string['reportcreated'] = 'Report created';
$string['reportdeleted'] = 'Report deleted';
$string['reportsettingstoggle'] = 'Show/hide settings sidebar';
$string['reportsource'] = 'Report source';
$string['reportsource_help'] = 'The report source defines where the data for the report will come from';
$string['reportsource_help'] = 'The report source defines where the data for the report will come from.';
$string['reportupdated'] = 'Report updated';
$string['resetall'] = 'Reset all';
$string['selectacondition'] = 'Select a condition';
@ -153,7 +153,7 @@ $string['selectareportsource'] = 'Select a report source';
$string['selectcourses'] = 'Select courses';
$string['showhide'] = 'Show/hide \'{$a}\'';
$string['sorting'] = 'Sorting';
$string['sorting_help'] = 'Define the default sort order of the columns added to the report. Users can choose their own table sorting preferences, but will fallback to the defaults provided here.';
$string['sorting_help'] = 'Sorting defines the initial sort order of columns in the report. The order can be reversed by toggling the Up/down icon. Users can then define their own sort order by clicking on a column name.';
$string['switchedit'] = 'Switch to edit mode';
$string['switchpreview'] = 'Switch to preview mode';
$string['timeadded'] = 'Time added';

View File

@ -365,14 +365,14 @@ $string['question:viewall'] = 'View all questions';
$string['question:viewmine'] = 'View your own questions';
$string['question:tagall'] = 'Tag all questions';
$string['question:tagmine'] = 'Tag your own questions';
$string['question:commentall'] = 'Comment all questions';
$string['question:commentmine'] = 'Comment your own questions';
$string['question:commentall'] = 'Comment on all questions';
$string['question:commentmine'] = 'Comment on your own questions';
$string['rating:rate'] = 'Add ratings to items';
$string['rating:view'] = 'View the total rating you received';
$string['rating:viewany'] = 'View total ratings that anyone received';
$string['rating:viewall'] = 'View all raw ratings given by individuals';
$string['reportbuilder:edit'] = 'Create/edit custom reports';
$string['reportbuilder:editall'] = 'Create/edit all custom reports';
$string['reportbuilder:edit'] = 'Edit your own custom reports';
$string['reportbuilder:editall'] = 'Edit all custom reports';
$string['reportbuilder:view'] = 'View custom reports';
$string['resetrole'] = 'Reset';
$string['resettingrole'] = 'Resetting role \'{$a}\'';

View File

@ -23,8 +23,8 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string['pluginname'] = 'Question comment';
$string['privacy:metadata:core_comment'] = 'Question comment plugin helps users with permission to comment in a question.';
$string['pluginname'] = 'Question comments';
$string['privacy:metadata:core_comment'] = 'The Question comments question bank plugin enables users to comment on questions.';
// Column.
$string['comment'] = 'Comment';
$string['commentplural'] = 'Comments';
@ -32,10 +32,9 @@ $string['commentplural'] = 'Comments';
$string['addcomment'] = 'Add comment';
$string['close'] = 'Close';
$string['commentheader'] = 'Question comments';
$string['commentdisabled'] = 'Comment feature is disabled "sitewide",
please ask your "Site administrator" to enable "usecomments" from "Advanced settings" in order to comment in this question.';
$string['commentdisabled'] = 'Comments are currently disabled on this site. Please contact your site administrator.';
// Events.
$string['comment_added'] = 'The user with id \'{$a->userid}\' added the comment with id \'{$a->objectid}\'
to the \'{$a->component}\' for the question with id \'{$a->itemid}\'.';
$string['comment_removed'] = 'The user with id \'{$a->userid}\' deleted the comment with id \'{$a->objectid}\'
to the \'{$a->component}\' for the question with id \'{$a->itemid}\'.';
$string['comment_added'] = 'The user with ID \'{$a->userid}\' added the comment with ID \'{$a->objectid}\'
to the \'{$a->component}\' for the question with ID \'{$a->itemid}\'.';
$string['comment_removed'] = 'The user with ID \'{$a->userid}\' deleted the comment with ID \'{$a->objectid}\'
from the \'{$a->component}\' for the question with ID \'{$a->itemid}\'.';

View File

@ -20,13 +20,13 @@ Feature: Use the qbank plugin manager page for comment
Scenario: Enable/disable comment column from the base view
Given I log in as "admin"
When I navigate to "Plugins > Question bank plugins > Manage question bank plugins" in site administration
And I should see "Question comment"
And I click on "Disable" "link" in the "Question comment" "table_row"
And I should see "Question comments"
And I click on "Disable" "link" in the "Question comments" "table_row"
And I am on the "Test quiz" "quiz activity" page
And I navigate to "Question bank > Questions" in current page administration
Then "#categoryquestions .header.commentcount" "css_element" should not be visible
And I navigate to "Plugins > Question bank plugins > Manage question bank plugins" in site administration
And I click on "Enable" "link" in the "Question comment" "table_row"
And I click on "Enable" "link" in the "Question comments" "table_row"
And I am on the "Test quiz" "quiz activity" page
And I navigate to "Question bank > Questions" in current page administration
And "#categoryquestions .header.commentcount" "css_element" should be visible

View File

@ -103,7 +103,7 @@ class qbank_comment_comment_created_deleted_test extends advanced_testcase {
// Checking that the event contains the expected values.
$this->assertInstanceOf('\qbank_comment\event\comment_created', $event);
$this->assertEquals($this->context, $event->get_context());
$this->assertStringContainsString('\'qbank_comment\' for the question with id \''.$this->questiondata->id.'\'',
$this->assertStringContainsString('\'qbank_comment\' for the question with ID \''.$this->questiondata->id.'\'',
$event->get_description());
}
@ -122,7 +122,7 @@ class qbank_comment_comment_created_deleted_test extends advanced_testcase {
// Checking that the event contains the expected values.
$this->assertInstanceOf('\qbank_comment\event\comment_deleted', $event);
$this->assertEquals($this->context, $event->get_context());
$this->assertStringContainsString('\'qbank_comment\' for the question with id \''.$this->questiondata->id.'\'',
$this->assertStringContainsString('\'qbank_comment\' for the question with ID \''.$this->questiondata->id.'\'',
$event->get_description());
}
}

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'Export to XML';
$string['privacy:metadata'] = 'Export to xml question bank plugin does not store any user data.';
$string['privacy:metadata'] = 'The Export to xml question bank plugin does not store any personal data.';

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'Manage categories';
$string['privacy:metadata'] = 'The Manage Categories plugin does not store any user data.';
$string['privacy:metadata'] = 'The Manage categories question bank plugin does not store any personal data.';

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'Preview question';
$string['privacy:metadata'] = 'Preview question plugin does not store any user data.';
$string['privacy:metadata'] = 'The Preview question question bank plugin does not store any personal data.';

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'Tag question';
$string['privacy:metadata'] = 'Tag question plugin does not store any user data.';
$string['privacy:metadata'] = 'The Tag question question bank plugin does not store any personal data.';

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'View creator';
$string['privacy:metadata'] = 'View creator question bank plugin does not store any user data.';
$string['privacy:metadata'] = 'The View creator question bank plugin does not store any personal data.';

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'View question name';
$string['privacy:metadata'] = 'View question name question bank plugin does not store any user data.';
$string['privacy:metadata'] = 'The View question name question bank plugin does not store any personal data.';

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'View question text';
$string['privacy:metadata'] = 'View question text question bank plugin does not store any user data.';
$string['privacy:metadata'] = 'The View question text question bank plugin does not store any personal data.';

View File

@ -24,4 +24,4 @@
*/
$string['pluginname'] = 'View question type';
$string['privacy:metadata'] = 'View question type question bank plugin does not store any user data.';
$string['privacy:metadata'] = 'The View question type question bank plugin does not store any personal data.';

View File

@ -92,7 +92,7 @@ class add_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
add::execute($report->get('id'), 'user:fullname');
}
}

View File

@ -98,7 +98,7 @@ class delete_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
delete::execute($report->get('id'), $column->get('id'));
}
}

View File

@ -98,7 +98,7 @@ class reorder_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
reorder::execute($report->get('id'), $column->get('id'), 1);
}
}

View File

@ -108,7 +108,7 @@ class reorder_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
reorder::execute($report->get('id'), $column->get('id'), 2);
}
}

View File

@ -94,7 +94,7 @@ class toggle_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
toggle::execute($report->get('id'), $column->get('id'), true, SORT_DESC);
}
}

View File

@ -82,7 +82,7 @@ class add_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
add::execute($report->get('id'), 'user:fullname');
}
}

View File

@ -91,7 +91,7 @@ class delete_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
delete::execute($report->get('id'), $condition->get('id'));
}
}

View File

@ -99,7 +99,7 @@ class reorder_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
reorder::execute($report->get('id'), $condition->get('id'), 1);
}
}

View File

@ -79,7 +79,7 @@ class reset_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
reset::execute($report->get('id'));
}
}

View File

@ -87,7 +87,7 @@ class add_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
add::execute($report->get('id'), 'user:fullname');
}
}

View File

@ -92,7 +92,7 @@ class delete_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
delete::execute($report->get('id'), $filter->get('id'));
}
}

View File

@ -102,7 +102,7 @@ class reorder_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
reorder::execute($report->get('id'), $filter->get('id'), 1);
}
}

View File

@ -81,7 +81,7 @@ class delete_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
delete::execute($report->get('id'));
}
}

View File

@ -125,7 +125,7 @@ class get_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
get::execute($report->get('id'), true);
}
@ -148,7 +148,7 @@ class get_test extends externallib_advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not view this report');
$this->expectExceptionMessage('You cannot view this report');
get::execute($report->get('id'), false);
}
}

View File

@ -58,7 +58,7 @@ class permission_test extends advanced_testcase {
unassign_capability('moodle/reportbuilder:view', $userrole, context_system::instance());
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not view this report');
$this->expectExceptionMessage('You cannot view this report');
permission::require_can_view_reports_list();
}
@ -92,7 +92,7 @@ class permission_test extends advanced_testcase {
unassign_capability('moodle/reportbuilder:view', $userrole, context_system::instance());
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not view this report');
$this->expectExceptionMessage('You cannot view this report');
permission::require_can_view_report($report);
}
@ -109,7 +109,7 @@ class permission_test extends advanced_testcase {
$systemreport = system_report_factory::create(system_report_available::class, context_system::instance());
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
permission::require_can_edit_report($systemreport->get_report_persistent());
}
@ -139,7 +139,7 @@ class permission_test extends advanced_testcase {
}
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
permission::require_can_edit_report($reportadmin);
}
@ -169,7 +169,7 @@ class permission_test extends advanced_testcase {
$this->setUser($user);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not edit this report');
$this->expectExceptionMessage('You cannot edit this report');
permission::require_can_edit_report($reportadmin);
}
@ -212,7 +212,7 @@ class permission_test extends advanced_testcase {
$this->setUser($user3);
$this->expectException(report_access_exception::class);
$this->expectExceptionMessage('You can not create a new report');
$this->expectExceptionMessage('You cannot create a new report');
permission::require_can_create_report((int)$user3->id);
}
}