MDL-86283 mod: improve overview data providers

This commit is contained in:
ferran
2025-09-10 15:39:33 +02:00
parent ba0ed2f3ab
commit 6ee48e3d9b
13 changed files with 1599 additions and 1690 deletions
@@ -161,34 +161,32 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array The data provider array.
* @return \Generator The data provider array.
*/
public static function provider_get_actions_overview(): array {
return [
'No groups - No team submission' => [
'groupmode' => NOGROUPS,
'teamsubmission' => false,
],
'No groups - Team submission' => [
'groupmode' => NOGROUPS,
'teamsubmission' => true,
],
'Visible groups - No team submission' => [
'groupmode' => VISIBLEGROUPS,
'teamsubmission' => false,
],
'Visible groups - Team submission' => [
'groupmode' => VISIBLEGROUPS,
'teamsubmission' => true,
],
'Separate groups - No team submission' => [
'groupmode' => SEPARATEGROUPS,
'teamsubmission' => false,
],
'Separate groups - Team submission' => [
'groupmode' => SEPARATEGROUPS,
'teamsubmission' => true,
],
public static function provider_get_actions_overview(): \Generator {
yield 'No groups - No team submission' => [
'groupmode' => NOGROUPS,
'teamsubmission' => false,
];
yield 'No groups - Team submission' => [
'groupmode' => NOGROUPS,
'teamsubmission' => true,
];
yield 'Visible groups - No team submission' => [
'groupmode' => VISIBLEGROUPS,
'teamsubmission' => false,
];
yield 'Visible groups - Team submission' => [
'groupmode' => VISIBLEGROUPS,
'teamsubmission' => true,
];
yield 'Separate groups - No team submission' => [
'groupmode' => SEPARATEGROUPS,
'teamsubmission' => false,
];
yield 'Separate groups - Team submission' => [
'groupmode' => SEPARATEGROUPS,
'teamsubmission' => true,
];
}
@@ -231,19 +229,17 @@ final class overview_test extends \advanced_testcase {
/**
* Provider for get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function get_due_date_overview_provider(): array {
return [
'no_due' => [
'timeincrement' => null,
],
'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
],
'future_due' => [
'timeincrement' => (4 * DAYSECS),
],
public static function get_due_date_overview_provider(): \Generator {
yield 'no_due' => [
'timeincrement' => null,
];
yield 'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
];
yield 'future_due' => [
'timeincrement' => (4 * DAYSECS),
];
}
@@ -143,22 +143,20 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function get_extra_date_data(): array {
return [
'tomorrow' => [
'timeincrement' => DAYSECS,
],
'yesterday' => [
'timeincrement' => -1 * DAYSECS,
],
'today' => [
'timeincrement' => 0,
],
'No date' => [
'timeincrement' => null,
],
public static function get_extra_date_data(): \Generator {
yield 'tomorrow' => [
'timeincrement' => DAYSECS,
];
yield 'yesterday' => [
'timeincrement' => -1 * DAYSECS,
];
yield 'today' => [
'timeincrement' => 0,
];
yield 'No date' => [
'timeincrement' => null,
];
}
@@ -192,22 +190,20 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function get_extra_room_type_overview_data(): array {
return [
'All' => [
'roomtype' => instance::TYPE_ALL,
'expectedtype' => get_string('instance_type_default', 'bigbluebuttonbn'),
],
'Room Only' => [
'roomtype' => instance::TYPE_ROOM_ONLY,
'expectedtype' => get_string('instance_type_room_only', 'bigbluebuttonbn'),
],
'Recording Only' => [
'roomtype' => instance::TYPE_RECORDING_ONLY,
'expectedtype' => get_string('instance_type_recording_only', 'bigbluebuttonbn'),
],
public static function get_extra_room_type_overview_data(): \Generator {
yield 'All' => [
'roomtype' => instance::TYPE_ALL,
'expectedtype' => get_string('instance_type_default', 'bigbluebuttonbn'),
];
yield 'Room Only' => [
'roomtype' => instance::TYPE_ROOM_ONLY,
'expectedtype' => get_string('instance_type_room_only', 'bigbluebuttonbn'),
];
yield 'Recording Only' => [
'roomtype' => instance::TYPE_RECORDING_ONLY,
'expectedtype' => get_string('instance_type_recording_only', 'bigbluebuttonbn'),
];
}
@@ -249,19 +245,16 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_studentsattempted_overview and test_get_extra_totalattempts_overview
*
* @return array
* @return \Generator
*/
public static function get_extra_recordings_overview_data(): array {
return [
'with recordings' => [
'activityname' => 'withrecordings',
'recordingcount' => 2,
],
'without recordings' => [
'activityname' => 'withoutrecordings',
'recordingcount' => 0,
],
public static function get_extra_recordings_overview_data(): \Generator {
yield 'with recordings' => [
'activityname' => 'withrecordings',
'recordingcount' => 2,
];
yield 'without recordings' => [
'activityname' => 'withoutrecordings',
'recordingcount' => 0,
];
}
@@ -320,9 +313,9 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_studentsattempted_overview and test_get_extra_totalattempts_overview
*
* @return array
* @return \Generator
*/
public static function get_extra_recordings_overview_with_groups_data(): array {
public static function get_extra_recordings_overview_with_groups_data(): \Generator {
// The setup is as follows:
// - T1 is in group but is editing teacher so can see recordings from group g1 and g2.
// - T2 is not in any group but is editing teacher so can see recordings from group g1 and g2.
@@ -333,39 +326,37 @@ final class overview_test extends \advanced_testcase {
// We have 3 recordings in total (all processed:
// - 2 recordings in group g1.
// - 1 recording in group g2.
return [
'With separate groups' => [
'activityname' => 'withrecordings',
'groupmode' => SEPARATEGROUPS,
'recordingcounts' => [
't1' => 4, // T1 is in group g1 and can see recordings from group g2 (as has all access as editing teacher).
't2' => 4, // T2 is not in any group but can see recordings from group g1 and g2 as editing teacher.
't3' => 2, // T3 is in group g1 so can see recordings from group g1.
't4' => null, // T4 is not in any group so should not see any recording.
't5' => 1, // T5 is in group g2 and can see recordings from group g2.
],
yield 'With separate groups' => [
'activityname' => 'withrecordings',
'groupmode' => SEPARATEGROUPS,
'recordingcounts' => [
't1' => 4, // T1 is in group g1 and can see recordings from group g2 (as has all access as editing teacher).
't2' => 4, // T2 is not in any group but can see recordings from group g1 and g2 as editing teacher.
't3' => 2, // T3 is in group g1 so can see recordings from group g1.
't4' => null, // T4 is not in any group so should not see any recording.
't5' => 1, // T5 is in group g2 and can see recordings from group g2.
],
'With no groups' => [
'activityname' => 'withrecordings',
'groupmode' => NOGROUPS,
'recordingcounts' => [
't1' => 4,
't2' => 4,
't3' => 4,
't4' => 4,
't5' => 4,
],
];
yield 'With no groups' => [
'activityname' => 'withrecordings',
'groupmode' => NOGROUPS,
'recordingcounts' => [
't1' => 4,
't2' => 4,
't3' => 4,
't4' => 4,
't5' => 4,
],
'With visible groups' => [
'activityname' => 'withrecordings',
'groupmode' => VISIBLEGROUPS,
'recordingcounts' => [
't1' => 4,
't2' => 4,
't3' => 4,
't4' => 4,
't5' => 4,
],
];
yield 'With visible groups' => [
'activityname' => 'withrecordings',
'groupmode' => VISIBLEGROUPS,
'recordingcounts' => [
't1' => 4,
't2' => 4,
't3' => 4,
't4' => 4,
't5' => 4,
],
];
}
@@ -56,22 +56,20 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_status_for_user.
*
* @return array
* @return \Generator
*/
public static function data_provider_get_extra_status_for_user(): array {
return [
'teacher view answered' => [
'user' => 't1',
'answered' => null, // Teacher can not see the status column.
],
'student view answered' => [
'user' => 's1',
'answered' => true,
],
'student view not answered' => [
'user' => 's2',
'answered' => false,
],
public static function data_provider_get_extra_status_for_user(): \Generator {
yield 'teacher view answered' => [
'user' => 't1',
'answered' => null, // Teacher can not see the status column.
];
yield 'student view answered' => [
'user' => 's1',
'answered' => true,
];
yield 'student view not answered' => [
'user' => 's2',
'answered' => false,
];
}
@@ -110,22 +108,20 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function data_provider_get_due_date_overview(): array {
return [
'tomorrow' => [
'timeincrement' => 1 * DAYSECS,
],
'yesterday' => [
'timeincrement' => -1 * DAYSECS,
],
'today' => [
'timeincrement' => 0,
],
'No date' => [
'timeincrement' => null,
],
public static function data_provider_get_due_date_overview(): \Generator {
yield 'tomorrow' => [
'timeincrement' => 1 * DAYSECS,
];
yield 'yesterday' => [
'timeincrement' => -1 * DAYSECS,
];
yield 'today' => [
'timeincrement' => 0,
];
yield 'No date' => [
'timeincrement' => null,
];
}
@@ -157,18 +153,16 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array the data provider array
* @return \Generator the data provider array
*/
public static function provider_test_get_actions_overview(): array {
return [
'Student' => [
'username' => 's1',
'expectedcount' => null,
],
'Teacher' => [
'username' => 't1',
'expectedcount' => 3,
],
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'username' => 's1',
'expectedcount' => null,
];
yield 'Teacher' => [
'username' => 't1',
'expectedcount' => 3,
];
}
@@ -236,125 +230,123 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_students_who_responded.
*
* @return array the data provider array
* @return \Generator the data provider array
*/
public static function provider_get_extra_students_who_responded(): array {
return [
'Student' => [
'currentuser' => 's1',
'expectedcount' => null,
],
// No groups.
'No groups - Teacher - With answers - No multiple' => [
'currentuser' => 't2',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => NOGROUPS,
'expectedcount' => 3,
],
'No groups - Teacher - Without answers - No multiple' => [
'currentuser' => 't2',
'withanswers' => false,
'groupmode' => NOGROUPS,
'expectedcount' => 0,
],
'No groups - Teacher - With answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => NOGROUPS,
'expectedcount' => 3,
],
'No groups - Teacher - Without answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => NOGROUPS,
'expectedcount' => 0,
],
// Visible groups.
'Visible groups - Teacher - With answers - No multiple' => [
'currentuser' => 't2',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 3,
],
'Visible groups - Teacher - Without answers - No multiple' => [
'currentuser' => 't2',
'withanswers' => false,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 0,
],
'Visible groups - Teacher - With answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 3,
],
'Visible groups - Teacher - Without answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 0,
],
// Separate groups.
'Separate groups - Editing teacher - With answers - No multiple' => [
'currentuser' => 't1',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 3,
],
'Separate groups - Editing teacher - Without answers - No multiple' => [
'currentuser' => 't1',
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
],
'Separate groups - Editing teacher - With answers - Multiple' => [
'currentuser' => 't1',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 3,
],
'Separate groups - Editing teacher - Without answers - Multiple' => [
'currentuser' => 't1',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
],
'Separate groups - Non-editing teacher - With answers - No multiple' => [
'currentuser' => 't2',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 1,
],
'Separate groups - Non-editing teacher - Without answers - No multiple' => [
'currentuser' => 't2',
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
],
'Separate groups - Non-editing teacher - With answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 1,
],
'Separate groups - Non-editing teacher - Without answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
],
public static function provider_get_extra_students_who_responded(): \Generator {
yield 'Student' => [
'currentuser' => 's1',
'expectedcount' => null,
];
// No groups.
yield 'No groups - Teacher - With answers - No multiple' => [
'currentuser' => 't2',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => NOGROUPS,
'expectedcount' => 3,
];
yield 'No groups - Teacher - Without answers - No multiple' => [
'currentuser' => 't2',
'withanswers' => false,
'groupmode' => NOGROUPS,
'expectedcount' => 0,
];
yield 'No groups - Teacher - With answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => NOGROUPS,
'expectedcount' => 3,
];
yield 'No groups - Teacher - Without answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => NOGROUPS,
'expectedcount' => 0,
];
// Visible groups.
yield 'Visible groups - Teacher - With answers - No multiple' => [
'currentuser' => 't2',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 3,
];
yield 'Visible groups - Teacher - Without answers - No multiple' => [
'currentuser' => 't2',
'withanswers' => false,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 0,
];
yield 'Visible groups - Teacher - With answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 3,
];
yield 'Visible groups - Teacher - Without answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => VISIBLEGROUPS,
'expectedcount' => 0,
];
// Separate groups.
yield 'Separate groups - Editing teacher - With answers - No multiple' => [
'currentuser' => 't1',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 3,
];
yield 'Separate groups - Editing teacher - Without answers - No multiple' => [
'currentuser' => 't1',
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
];
yield 'Separate groups - Editing teacher - With answers - Multiple' => [
'currentuser' => 't1',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 3,
];
yield 'Separate groups - Editing teacher - Without answers - Multiple' => [
'currentuser' => 't1',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
];
yield 'Separate groups - Non-editing teacher - With answers - No multiple' => [
'currentuser' => 't2',
'allowmultiple' => false,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 1,
];
yield 'Separate groups - Non-editing teacher - Without answers - No multiple' => [
'currentuser' => 't2',
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
];
yield 'Separate groups - Non-editing teacher - With answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => true,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 1,
];
yield 'Separate groups - Non-editing teacher - Without answers - Multiple' => [
'currentuser' => 't2',
'allowmultiple' => true,
'withanswers' => false,
'groupmode' => SEPARATEGROUPS,
'expectedcount' => 0,
];
}
@@ -92,51 +92,49 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_actions_overview(): array {
return [
'Student' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [1, 0],
'expected' => null,
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [1, 0],
'expected' => null,
];
yield 'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [1, 0],
'expected' => [
'link' => get_string('view', 'moodle'),
'value' => 0,
],
'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [1, 0],
'expected' => [
'link' => get_string('view', 'moodle'),
'value' => 0,
],
];
yield 'Teacher without entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [],
'expected' => [
'link' => get_string('view', 'moodle'),
'value' => 0,
],
'Teacher without entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [],
'expected' => [
'link' => get_string('view', 'moodle'),
'value' => 0,
],
];
yield 'Teacher with entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 0],
'expected' => [
'link' => get_string('approve', 'data'),
'value' => 1,
],
'Teacher with entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 0],
'expected' => [
'link' => get_string('approve', 'data'),
'value' => 1,
],
],
'Teacher with approved entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 1],
'expected' => [
'link' => get_string('view', 'moodle'),
'value' => 0,
],
];
yield 'Teacher with approved entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 1],
'expected' => [
'link' => get_string('view', 'moodle'),
'value' => 0,
],
];
}
@@ -218,69 +216,67 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test entry related extras.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_entries_overview(): array {
return [
'Student not needing approval' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => 2,
'totalentries' => 4,
],
public static function provider_test_get_entries_overview(): \Generator {
yield 'Student not needing approval' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => 2,
'totalentries' => 4,
],
'Student needing approval' => [
'role' => 'student',
'needsapproval' => true,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => 2,
'totalentries' => 2,
],
];
yield 'Student needing approval' => [
'role' => 'student',
'needsapproval' => true,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => 2,
'totalentries' => 2,
],
'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => null,
'totalentries' => 4,
],
];
yield 'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => null,
'totalentries' => 4,
],
'Teacher without entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [],
'myentries' => [],
'expected' => [
'myentries' => null,
'totalentries' => 0,
],
];
yield 'Teacher without entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [],
'myentries' => [],
'expected' => [
'myentries' => null,
'totalentries' => 0,
],
'Teacher with entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => null,
'totalentries' => 4,
],
];
yield 'Teacher with entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 0],
'myentries' => [1, 0],
'expected' => [
'myentries' => null,
'totalentries' => 4,
],
'Teacher with approved entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 1],
'myentries' => [1, 1],
'expected' => [
'myentries' => null,
'totalentries' => 4,
],
];
yield 'Teacher with approved entries (require approval)' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [1, 1],
'myentries' => [1, 1],
'expected' => [
'myentries' => null,
'totalentries' => 4,
],
];
}
@@ -446,82 +442,80 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test comments extras.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_comments_overview(): array {
return [
'Student not needing approval with no comments' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [
public static function provider_test_get_comments_overview(): \Generator {
yield 'Student not needing approval with no comments' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [
['approved' => 1, 'comments' => false],
['approved' => 0, 'comments' => false],
],
'expected' => 0,
];
yield 'Student not needing approval with comments' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'Student not needing approval with comments' => [
'role' => 'student',
'needsapproval' => false,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'expected' => 1,
'expected' => 1,
];
yield 'Student needing approval with no comments' => [
'role' => 'student',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => false],
['approved' => 0, 'comments' => false],
],
'Student needing approval with no comments' => [
'role' => 'student',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => false],
['approved' => 0, 'comments' => false],
],
'expected' => 0,
'expected' => 0,
];
yield 'Student needing approval with comments' => [
'role' => 'student',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'Student needing approval with comments' => [
'role' => 'student',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'expected' => 1,
'expected' => 1,
];
yield 'Teacher not needing approval with no comments' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [
['approved' => 1, 'comments' => false],
['approved' => 0, 'comments' => false],
],
'Teacher not needing approval with no comments' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [
['approved' => 1, 'comments' => false],
['approved' => 0, 'comments' => false],
],
'expected' => 0,
'expected' => 0,
];
yield 'Teacher not needing approval with comments' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'Teacher not needing approval with comments' => [
'role' => 'editingteacher',
'needsapproval' => false,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'expected' => 2,
'expected' => 2,
];
yield 'Teacher needing approval with no comments' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => false],
['approved' => 0, 'comments' => false],
],
'Teacher needing approval with no comments' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => false],
['approved' => 0, 'comments' => false],
],
'expected' => 0,
],
'Teacher needing approval with comments' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'expected' => 2,
'expected' => 0,
];
yield 'Teacher needing approval with comments' => [
'role' => 'editingteacher',
'needsapproval' => true,
'entries' => [
['approved' => 1, 'comments' => true],
['approved' => 0, 'comments' => true],
],
'expected' => 2,
];
}
}
@@ -73,20 +73,18 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_actions_overview(): array {
return [
'Student' => [
'role' => 'student',
'expected' => null,
],
'Teacher' => [
'role' => 'editingteacher',
'expected' => [
'name' => get_string('actions'),
'value' => get_string('view'),
],
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'role' => 'student',
'expected' => null,
];
yield 'Teacher' => [
'role' => 'editingteacher',
'expected' => [
'name' => get_string('actions'),
'value' => get_string('view'),
],
];
}
@@ -126,26 +124,24 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_due_date_overview(): array {
return [
'Teacher with due date' => [
'user' => 'teacher',
'hasduedate' => true,
],
'Student with due date' => [
'user' => 'student',
'hasduedate' => true,
],
'Teacher without due date' => [
'user' => 'teacher',
'hasduedate' => false,
],
'Student without due date' => [
'user' => 'student',
'hasduedate' => false,
],
public static function provider_test_get_due_date_overview(): \Generator {
yield 'Teacher with due date' => [
'user' => 'teacher',
'hasduedate' => true,
];
yield 'Student with due date' => [
'user' => 'student',
'hasduedate' => true,
];
yield 'Teacher without due date' => [
'user' => 'teacher',
'hasduedate' => false,
];
yield 'Student without due date' => [
'user' => 'student',
'hasduedate' => false,
];
}
@@ -208,30 +204,28 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for get_extra_responses_overview.
*
* @return array
* @return \Generator
*/
public static function provider_get_extra_responses_overview(): array {
return [
'Teacher with responses' => [
'user' => 'teacher',
'expectnull' => false,
'hasresponses' => true,
],
'Student with responses' => [
'user' => 'student',
'expectnull' => true,
'hasresponses' => true,
],
'Teacher without responses' => [
'user' => 'teacher',
'expectnull' => false,
'hasresponses' => false,
],
'Student without responses' => [
'user' => 'student',
'expectnull' => true,
'hasresponses' => false,
],
public static function provider_get_extra_responses_overview(): \Generator {
yield 'Teacher with responses' => [
'user' => 'teacher',
'expectnull' => false,
'hasresponses' => true,
];
yield 'Student with responses' => [
'user' => 'student',
'expectnull' => true,
'hasresponses' => true,
];
yield 'Teacher without responses' => [
'user' => 'teacher',
'expectnull' => false,
'hasresponses' => false,
];
yield 'Student without responses' => [
'user' => 'student',
'expectnull' => true,
'hasresponses' => false,
];
}
@@ -349,100 +343,98 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for feedback_get_extra_responses_overview_with_groups.
*
* @return array
* @return \Generator
*/
public static function provider_feedback_get_extra_responses_overview_with_groups(): array {
return [
'Separate groups - Editing teacher' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher1',
'expectedcount' => 3,
],
'Separate groups - Non-editing teacher (groupa)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher2',
'expectedcount' => 2,
],
'Separate groups - Non-editing teacher (groupb)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher3',
'expectedcount' => 1,
],
'Separate groups - Non-editing teacher (groupc)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher4',
'expectedcount' => 0,
],
'Separate groups - Non-editing teacher (no group)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher5',
'expectedcount' => 3, // Although the expected count should be 0, this information will never be shown to the user.
],
'Separate groups - Editing teacher (no group)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher6',
'expectedcount' => 3,
],
'Visible groups - Editing teacher' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher1',
'expectedcount' => 3,
],
'Visible groups - Non-editing teacher (groupa)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher2',
'expectedcount' => 3,
],
'Visible groups - Non-editing teacher (groupb)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher3',
'expectedcount' => 3,
],
'Visible groups - Non-editing teacher (groupc)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher4',
'expectedcount' => 3,
],
'Visible groups - Non-editing teacher (no group)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher5',
'expectedcount' => 3,
],
'Visible groups - Editing teacher (no group)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher6',
'expectedcount' => 3,
],
'No groups - Editing teacher' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher1',
'expectedcount' => 3,
],
'No groups - Non-editing teacher (groupa)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher2',
'expectedcount' => 3,
],
'No groups - Non-editing teacher (groupb)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher3',
'expectedcount' => 3,
],
'No groups - Non-editing teacher (groupc)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher4',
'expectedcount' => 3,
],
'No groups - Non-editing teacher (no group)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher5',
'expectedcount' => 3,
],
'No groups - Editing teacher (no group)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher6',
'expectedcount' => 3,
],
public static function provider_feedback_get_extra_responses_overview_with_groups(): \Generator {
yield 'Separate groups - Editing teacher' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher1',
'expectedcount' => 3,
];
yield 'Separate groups - Non-editing teacher (groupa)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher2',
'expectedcount' => 2,
];
yield 'Separate groups - Non-editing teacher (groupb)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher3',
'expectedcount' => 1,
];
yield 'Separate groups - Non-editing teacher (groupc)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher4',
'expectedcount' => 0,
];
yield 'Separate groups - Non-editing teacher (no group)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher5',
'expectedcount' => 3, // Although the expected count should be 0, this information will never be shown to the user.
];
yield 'Separate groups - Editing teacher (no group)' => [
'groupmode' => SEPARATEGROUPS,
'currentuser' => 'teacher6',
'expectedcount' => 3,
];
yield 'Visible groups - Editing teacher' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher1',
'expectedcount' => 3,
];
yield 'Visible groups - Non-editing teacher (groupa)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher2',
'expectedcount' => 3,
];
yield 'Visible groups - Non-editing teacher (groupb)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher3',
'expectedcount' => 3,
];
yield 'Visible groups - Non-editing teacher (groupc)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher4',
'expectedcount' => 3,
];
yield 'Visible groups - Non-editing teacher (no group)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher5',
'expectedcount' => 3,
];
yield 'Visible groups - Editing teacher (no group)' => [
'groupmode' => VISIBLEGROUPS,
'currentuser' => 'teacher6',
'expectedcount' => 3,
];
yield 'No groups - Editing teacher' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher1',
'expectedcount' => 3,
];
yield 'No groups - Non-editing teacher (groupa)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher2',
'expectedcount' => 3,
];
yield 'No groups - Non-editing teacher (groupb)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher3',
'expectedcount' => 3,
];
yield 'No groups - Non-editing teacher (groupc)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher4',
'expectedcount' => 3,
];
yield 'No groups - Non-editing teacher (no group)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher5',
'expectedcount' => 3,
];
yield 'No groups - Editing teacher (no group)' => [
'groupmode' => NOGROUPS,
'currentuser' => 'teacher6',
'expectedcount' => 3,
];
}
@@ -502,30 +494,28 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_submitted_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_extra_submitted_overview(): array {
return [
'Teacher with responses' => [
'user' => 'teacher',
'expectnull' => true,
'hasresponses' => true,
],
'Student with responses' => [
'user' => 'student',
'expectnull' => false,
'hasresponses' => true,
],
'Teacher without responses' => [
'user' => 'teacher',
'expectnull' => true,
'hasresponses' => false,
],
'Student without responses' => [
'user' => 'student',
'expectnull' => false,
'hasresponses' => false,
],
public static function provider_test_get_extra_submitted_overview(): \Generator {
yield 'Teacher with responses' => [
'user' => 'teacher',
'expectnull' => true,
'hasresponses' => true,
];
yield 'Student with responses' => [
'user' => 'student',
'expectnull' => false,
'hasresponses' => true,
];
yield 'Teacher without responses' => [
'user' => 'teacher',
'expectnull' => true,
'hasresponses' => false,
];
yield 'Student without responses' => [
'user' => 'student',
'expectnull' => false,
'hasresponses' => false,
];
}
}
@@ -147,19 +147,17 @@ final class overview_test extends \advanced_testcase {
/**
* Provider for get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function get_due_date_overview_provider(): array {
return [
'no_due' => [
'timeincrement' => null,
],
'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
],
'future_due' => [
'timeincrement' => (4 * DAYSECS),
],
public static function get_due_date_overview_provider(): \Generator {
yield 'no_due' => [
'timeincrement' => null,
];
yield 'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
];
yield 'future_due' => [
'timeincrement' => (4 * DAYSECS),
];
}
@@ -214,34 +212,32 @@ final class overview_test extends \advanced_testcase {
/**
* Provider for get_extra_forumtype_overview.
*
* @return array
* @return \Generator
*/
public static function get_extra_forumtype_overview_provider(): array {
return [
'General' => [
'forumtype' => 'general',
'expected' => get_string('generalforum', 'forum'),
],
'Single discussion' => [
'forumtype' => 'single',
'expected' => get_string('singleforum', 'forum'),
],
'Each user' => [
'forumtype' => 'eachuser',
'expected' => get_string('eachuserforum', 'forum'),
],
'Question&Answer' => [
'forumtype' => 'qanda',
'expected' => get_string('qandaforum', 'forum'),
],
'Blog' => [
'forumtype' => 'blog',
'expected' => get_string('blogforum', 'forum'),
],
'News' => [
'forumtype' => 'news',
'expected' => get_string('namenews', 'forum'),
],
public static function get_extra_forumtype_overview_provider(): \Generator {
yield 'General' => [
'forumtype' => 'general',
'expected' => get_string('generalforum', 'forum'),
];
yield 'Single discussion' => [
'forumtype' => 'single',
'expected' => get_string('singleforum', 'forum'),
];
yield 'Each user' => [
'forumtype' => 'eachuser',
'expected' => get_string('eachuserforum', 'forum'),
];
yield 'Question&Answer' => [
'forumtype' => 'qanda',
'expected' => get_string('qandaforum', 'forum'),
];
yield 'Blog' => [
'forumtype' => 'blog',
'expected' => get_string('blogforum', 'forum'),
];
yield 'News' => [
'forumtype' => 'news',
'expected' => get_string('namenews', 'forum'),
];
}
@@ -306,112 +302,110 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_track_overview.
*
* @return array
* @return \Generator
*/
public static function get_extra_track_overview_provider(): array {
return [
// Student role tests.
'Student. Tracking optional' => [
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 1,
'disabled' => false,
],
'Student. Tracking forced off' => [
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
],
'Student. Tracking forced on' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
],
'Student. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => false,
'allowforced' => false,
],
'Student. $USER->trackforums disabled. Tracking optional. ' => [
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
],
'Student. $USER->trackforums disabled. Tracking forced off' => [
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
],
'Student. $USER->trackforums disabled. Tracking forced on' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
'trackforums' => 0,
],
'Student. $USER->trackforums disabled. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 0,
'disabled' => true,
'allowforced' => false,
'trackforums' => 0,
],
// Teacher role tests.
'Teacher. Tracking optional' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 1,
'disabled' => false,
],
'Teacher. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
],
'Teacher. Tracking forced on' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
],
'Teacher. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => false,
'allowforced' => false,
],
'Teacher. $USER->trackforums disabled. Tracking optional' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
],
'Teacher. $USER->trackforums disabled. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
],
'Teacher. $USER->trackforums disabled. Tracking forced on' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
'trackforums' => 0,
],
'Teacher. $USER->trackforums disabled. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 0,
'disabled' => true,
'allowforced' => false,
'trackforums' => 0,
],
public static function get_extra_track_overview_provider(): \Generator {
// Student role tests.
yield 'Student. Tracking optional' => [
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 1,
'disabled' => false,
];
yield 'Student. Tracking forced off' => [
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
];
yield 'Student. Tracking forced on' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
];
yield 'Student. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => false,
'allowforced' => false,
];
yield 'Student. $USER->trackforums disabled. Tracking optional. ' => [
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
];
yield 'Student. $USER->trackforums disabled. Tracking forced off' => [
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
];
yield 'Student. $USER->trackforums disabled. Tracking forced on' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
'trackforums' => 0,
];
yield 'Student. $USER->trackforums disabled. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 0,
'disabled' => true,
'allowforced' => false,
'trackforums' => 0,
];
// Teacher role tests.
yield 'Teacher. Tracking optional' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 1,
'disabled' => false,
];
yield 'Teacher. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
];
yield 'Teacher. Tracking forced on' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
];
yield 'Teacher. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => false,
'allowforced' => false,
];
yield 'Teacher. $USER->trackforums disabled. Tracking optional' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OPTIONAL,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
];
yield 'Teacher. $USER->trackforums disabled. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_OFF,
'tracked' => 0,
'disabled' => true,
'trackforums' => 0,
];
yield 'Teacher. $USER->trackforums disabled. Tracking forced on' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 1,
'disabled' => true,
'trackforums' => 0,
];
yield 'Teacher. $USER->trackforums disabled. Tracking forced on, with $CFG->forum_allowforcedreadtracking disabled' => [
'role' => 'teacher',
'forumtype' => FORUM_TRACKING_FORCED,
'tracked' => 0,
'disabled' => true,
'allowforced' => false,
'trackforums' => 0,
];
}
@@ -468,56 +462,54 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for get_extra_subscribed_overview.
*
* @return array
* @return \Generator
*/
public static function get_extra_subscribed_overview_provider(): array {
return [
// Student role tests.
'Student. Tracking forced on' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'subscribed' => 1,
'disabled' => true,
],
'Student. Tracking forced off' => [
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'subscribed' => 0,
'disabled' => true,
],
'Student. Tracking choose' => [
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'subscribed' => 0,
'disabled' => false,
],
'Student. Tracking initial on' => [
'forumtype' => FORUM_INITIALSUBSCRIBE,
'subscribed' => 1,
'disabled' => false,
],
// Teacher role tests.
'Teacher. Tracking forced on' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'subscribed' => 1,
'disabled' => true,
],
'Teacher. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'subscribed' => 0,
'disabled' => false,
],
'Teacher. Tracking choose' => [
'role' => 'teacher',
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'subscribed' => 0,
'disabled' => false,
],
'Teacher. Tracking initial on' => [
'role' => 'teacher',
'forumtype' => FORUM_INITIALSUBSCRIBE,
'subscribed' => 1,
'disabled' => false,
],
public static function get_extra_subscribed_overview_provider(): \Generator {
// Student role tests.
yield 'Student. Tracking forced on' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'subscribed' => 1,
'disabled' => true,
];
yield 'Student. Tracking forced off' => [
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'subscribed' => 0,
'disabled' => true,
];
yield 'Student. Tracking choose' => [
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'subscribed' => 0,
'disabled' => false,
];
yield 'Student. Tracking initial on' => [
'forumtype' => FORUM_INITIALSUBSCRIBE,
'subscribed' => 1,
'disabled' => false,
];
yield // Teacher role tests.
'Teacher. Tracking forced on' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'subscribed' => 1,
'disabled' => true,
];
yield 'Teacher. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'subscribed' => 0,
'disabled' => false,
];
yield 'Teacher. Tracking choose' => [
'role' => 'teacher',
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'subscribed' => 0,
'disabled' => false,
];
yield 'Teacher. Tracking initial on' => [
'role' => 'teacher',
'forumtype' => FORUM_INITIALSUBSCRIBE,
'subscribed' => 1,
'disabled' => false,
];
}
@@ -591,70 +583,68 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for get_extra_emaildigest_overview.
*
* @return array
* @return \Generator
*/
public static function get_extra_emaildigest_overview_provider(): array {
return [
// Student role tests.
'Student. Tracking forced on. No digest' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
],
'Student. Tracking forced off' => [
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'emaildigestvalue' => '-',
],
'Student. Tracking choose' => [
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'emaildigestvalue' => 'default',
],
'Student. Tracking initial on' => [
'forumtype' => FORUM_INITIALSUBSCRIBE,
'emaildigestvalue' => 'default',
],
'Student. Complete' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 1,
],
'Student. Subjects' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 2,
],
// Teacher role tests.
'Teacher. Tracking forced on. No digest' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
],
'Teacher. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'emaildigestvalue' => 'default',
],
'Teacher. Tracking choose' => [
'role' => 'teacher',
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'emaildigestvalue' => 'default',
],
'Teacher. Tracking initial on' => [
'role' => 'teacher',
'forumtype' => FORUM_INITIALSUBSCRIBE,
'emaildigestvalue' => 'default',
],
'Teacher. Complete' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 1,
],
'Teacher. Subjects' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 2,
],
public static function get_extra_emaildigest_overview_provider(): \Generator {
// Student role tests.
yield 'Student. Tracking forced on. No digest' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
];
yield 'Student. Tracking forced off' => [
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'emaildigestvalue' => '-',
];
yield 'Student. Tracking choose' => [
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'emaildigestvalue' => 'default',
];
yield 'Student. Tracking initial on' => [
'forumtype' => FORUM_INITIALSUBSCRIBE,
'emaildigestvalue' => 'default',
];
yield 'Student. Complete' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 1,
];
yield 'Student. Subjects' => [
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 2,
];
// Teacher role tests.
yield 'Teacher. Tracking forced on. No digest' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
];
yield 'Teacher. Tracking forced off' => [
'role' => 'teacher',
'forumtype' => FORUM_DISALLOWSUBSCRIBE,
'emaildigestvalue' => 'default',
];
yield 'Teacher. Tracking choose' => [
'role' => 'teacher',
'forumtype' => FORUM_CHOOSESUBSCRIBE,
'emaildigestvalue' => 'default',
];
yield 'Teacher. Tracking initial on' => [
'role' => 'teacher',
'forumtype' => FORUM_INITIALSUBSCRIBE,
'emaildigestvalue' => 'default',
];
yield 'Teacher. Complete' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 1,
];
yield 'Teacher. Subjects' => [
'role' => 'teacher',
'forumtype' => FORUM_FORCESUBSCRIBE,
'emaildigestvalue' => 'default',
'usermaildigest' => 2,
];
}
@@ -100,45 +100,43 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_actions_overview(): array {
return [
'Student' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => null,
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => null,
];
yield 'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('actions'),
'value' => 0,
'content' => get_string('view'),
],
'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('actions'),
'value' => 0,
'content' => get_string('view'),
],
];
yield 'Teacher without entries (require approval)' => [
'role' => 'editingteacher',
'requireapproval' => true,
'hasentries' => false,
'expected' => [
'name' => get_string('actions'),
'value' => 0,
'content' => get_string('view'),
],
'Teacher without entries (require approval)' => [
'role' => 'editingteacher',
'requireapproval' => true,
'hasentries' => false,
'expected' => [
'name' => get_string('actions'),
'value' => 0,
'content' => get_string('view'),
],
],
'Teacher with entries (require approval)' => [
'role' => 'editingteacher',
'requireapproval' => true,
'hasentries' => true,
'expected' => [
'name' => get_string('actions'),
'value' => 2,
'content' => get_string('approve', 'mod_glossary'),
],
];
yield 'Teacher with entries (require approval)' => [
'role' => 'editingteacher',
'requireapproval' => true,
'hasentries' => true,
'expected' => [
'name' => get_string('actions'),
'value' => 2,
'content' => get_string('approve', 'mod_glossary'),
],
];
}
@@ -252,46 +250,44 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_comments_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_extra_comments_overview(): array {
return [
'Teacher without responses' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => false,
'expected' => '0',
],
'Teacher with responses (non-require approval)' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => '5',
],
'Teacher with responses (require approval)' => [
'role' => 'editingteacher',
'requireapproval' => true,
'hasentries' => true,
'expected' => '5',
],
'Student without responses' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => false,
'expected' => '0',
],
'Student with responses (non-require approval)' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => '5',
],
'Student with responses (require approval)' => [
'role' => 'student',
'requireapproval' => true,
'hasentries' => true,
'expected' => '4', // One comment is from an unapproved entry created by a different user.
],
public static function provider_test_get_extra_comments_overview(): \Generator {
yield 'Teacher without responses' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => false,
'expected' => '0',
];
yield 'Teacher with responses (non-require approval)' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => '5',
];
yield 'Teacher with responses (require approval)' => [
'role' => 'editingteacher',
'requireapproval' => true,
'hasentries' => true,
'expected' => '5',
];
yield 'Student without responses' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => false,
'expected' => '0',
];
yield 'Student with responses (non-require approval)' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => '5',
];
yield 'Student with responses (require approval)' => [
'role' => 'student',
'requireapproval' => true,
'hasentries' => true,
'expected' => '4', // One comment is from an unapproved entry created by a different user.
];
}
@@ -334,30 +330,28 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_comments_overview_with_comments_disabled.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_extra_comments_overview_with_comments_disabled(): array {
return [
'Use comments disabled, allow comments disabled' => [
'usecomments' => false,
'allowcomments' => false,
'expected' => '-',
],
'Use comments enabled, allow comments disabled' => [
'usecomments' => true,
'allowcomments' => false,
'expected' => '-',
],
'Use comments disabled, allow comments enabled' => [
'usecomments' => false,
'allowcomments' => true,
'expected' => '-',
],
'Use comments enabled, allow comments enabled' => [
'usecomments' => true,
'allowcomments' => true,
'expected' => '0',
],
public static function provider_test_get_extra_comments_overview_with_comments_disabled(): \Generator {
yield 'Use comments disabled, allow comments disabled' => [
'usecomments' => false,
'allowcomments' => false,
'expected' => '-',
];
yield 'Use comments enabled, allow comments disabled' => [
'usecomments' => true,
'allowcomments' => false,
'expected' => '-',
];
yield 'Use comments disabled, allow comments enabled' => [
'usecomments' => false,
'allowcomments' => true,
'expected' => '-',
];
yield 'Use comments enabled, allow comments enabled' => [
'usecomments' => true,
'allowcomments' => true,
'expected' => '0',
];
}
@@ -433,45 +427,43 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_submitted_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_extra_totalentries_overview(): array {
return [
'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('entries', 'mod_glossary'),
'value' => 4,
],
public static function provider_test_get_extra_totalentries_overview(): \Generator {
yield 'Teacher with entries (non-require approval)' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('entries', 'mod_glossary'),
'value' => 4,
],
'Student without entries' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => false,
'expected' => [
'name' => get_string('totalentries', 'mod_glossary'),
'value' => 0,
],
];
yield 'Student without entries' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => false,
'expected' => [
'name' => get_string('totalentries', 'mod_glossary'),
'value' => 0,
],
'Student with entries (non-require approval)' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('totalentries', 'mod_glossary'),
'value' => 4,
],
];
yield 'Student with entries (non-require approval)' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('totalentries', 'mod_glossary'),
'value' => 4,
],
'Student with entries (require approval)' => [
'role' => 'student',
'requireapproval' => true,
'hasentries' => true,
'expected' => [
'name' => get_string('totalentries', 'mod_glossary'),
'value' => 3,
],
];
yield 'Student with entries (require approval)' => [
'role' => 'student',
'requireapproval' => true,
'hasentries' => true,
'expected' => [
'name' => get_string('totalentries', 'mod_glossary'),
'value' => 3,
],
];
}
@@ -553,42 +545,40 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_submitted_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_extra_myentries_overview(): array {
return [
'Teacher' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => null,
public static function provider_test_get_extra_myentries_overview(): \Generator {
yield 'Teacher' => [
'role' => 'editingteacher',
'requireapproval' => false,
'hasentries' => true,
'expected' => null,
];
yield 'Student without responses' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => false,
'expected' => [
'name' => get_string('myentries', 'mod_glossary'),
'value' => 0,
],
'Student without responses' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => false,
'expected' => [
'name' => get_string('myentries', 'mod_glossary'),
'value' => 0,
],
];
yield 'Student with responses (non-require approval)' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('myentries', 'mod_glossary'),
'value' => 1,
],
'Student with responses (non-require approval)' => [
'role' => 'student',
'requireapproval' => false,
'hasentries' => true,
'expected' => [
'name' => get_string('myentries', 'mod_glossary'),
'value' => 1,
],
],
'Student with responses (require approval)' => [
'role' => 'student',
'requireapproval' => true,
'hasentries' => true,
'expected' => [
'name' => get_string('myentries', 'mod_glossary'),
'value' => 1,
],
];
yield 'Student with responses (require approval)' => [
'role' => 'student',
'requireapproval' => true,
'hasentries' => true,
'expected' => [
'name' => get_string('myentries', 'mod_glossary'),
'value' => 1,
],
];
}
@@ -46,8 +46,6 @@ final class overview_test extends \advanced_testcase {
$teacher = $this->getDataGenerator()->create_and_enrol($course, 'editingteacher');
$student = $this->getDataGenerator()->create_and_enrol($course, 'student');
$this->getDataGenerator()->get_plugin_generator('mod_h5pactivity');
// Students have no action column.
$this->setUser($student);
$this->assertNull(overviewfactory::create($cm)->get_actions_overview());
@@ -120,25 +118,23 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test h5p type overview extra.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_extra_h5type_overview(): array {
return [
'Basic package' => [
'h5pfile' => 'basic_essay.h5p',
'iscorrect' => true,
'expected' => 'Essay',
],
'No json file' => [
'h5pfile' => 'no-json-file.h5p',
'iscorrect' => false,
'expected' => get_string('unknowntype', 'mod_h5pactivity'),
],
'Unzippable package' => [
'h5pfile' => 'unzippable.h5p',
'iscorrect' => false,
'expected' => get_string('unknowntype', 'mod_h5pactivity'),
],
public static function provider_test_get_extra_h5type_overview(): \Generator {
yield 'Basic package' => [
'h5pfile' => 'basic_essay.h5p',
'iscorrect' => true,
'expected' => 'Essay',
];
yield 'No json file' => [
'h5pfile' => 'no-json-file.h5p',
'iscorrect' => false,
'expected' => get_string('unknowntype', 'mod_h5pactivity'),
];
yield 'Unzippable package' => [
'h5pfile' => 'unzippable.h5p',
'iscorrect' => false,
'expected' => get_string('unknowntype', 'mod_h5pactivity'),
];
}
@@ -87,19 +87,17 @@ final class overview_test extends \advanced_testcase {
/**
* Provider for test_get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_due_date_overview(): array {
return [
'no_due' => [
'timeincrement' => null,
],
'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
],
'future_due' => [
'timeincrement' => (4 * DAYSECS),
],
public static function provider_test_get_due_date_overview(): \Generator {
yield 'no_due' => [
'timeincrement' => null,
];
yield 'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
];
yield 'future_due' => [
'timeincrement' => (4 * DAYSECS),
];
}
@@ -141,20 +139,18 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_actions_overview(): array {
return [
'Student' => [
'role' => 'student',
'expected' => null,
],
'Teacher' => [
'role' => 'editingteacher',
'expected' => [
'name' => get_string('actions'),
'value' => '',
],
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'role' => 'student',
'expected' => null,
];
yield 'Teacher' => [
'role' => 'editingteacher',
'expected' => [
'name' => get_string('actions'),
'value' => '',
],
];
}
@@ -65,19 +65,17 @@ final class overview_test extends \advanced_testcase {
/**
* Provider for test_get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_due_date_overview(): array {
return [
'no_due' => [
'timeincrement' => null,
],
'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
],
'future_due' => [
'timeincrement' => (4 * DAYSECS),
],
public static function provider_test_get_due_date_overview(): \Generator {
yield 'no_due' => [
'timeincrement' => null,
];
yield 'past_due' => [
'timeincrement' => -1 * (4 * DAYSECS),
];
yield 'future_due' => [
'timeincrement' => (4 * DAYSECS),
];
}
@@ -115,27 +113,25 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_actions_overview(): array {
return [
'Student' => [
'currentuser' => 's1',
'expected' => null,
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'currentuser' => 's1',
'expected' => null,
];
yield 'Editing Teacher' => [
'currentuser' => 't1',
'expected' => [
'name' => get_string('actions'),
'value' => '',
],
'Editing Teacher' => [
'currentuser' => 't1',
'expected' => [
'name' => get_string('actions'),
'value' => '',
],
],
'Non editing Teacher' => [
'currentuser' => 't2',
'expected' => [
'name' => get_string('actions'),
'value' => '',
],
];
yield 'Non editing Teacher' => [
'currentuser' => 't2',
'expected' => [
'name' => get_string('actions'),
'value' => '',
],
];
}
@@ -182,33 +178,31 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for provider_test_get_total_attempts_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_total_attempts_overview(): array {
return [
'Without groups' => [
'groupmode' => NOGROUPS,
'expected' => [
't1' => 5, // Count all attempts (even teacher's attempts).
't2' => 5,
's1' => null,
],
public static function provider_test_get_total_attempts_overview(): \Generator {
yield 'Without groups' => [
'groupmode' => NOGROUPS,
'expected' => [
't1' => 5, // Count all attempts (even teacher's attempts).
't2' => 5,
's1' => null,
],
'With separate groups' => [
'groupmode' => SEPARATEGROUPS,
'expected' => [
't1' => 5,
't2' => 3, // User 1 two attempts, teacher 2 one attempt (counted).
's1' => null,
],
];
yield 'With separate groups' => [
'groupmode' => SEPARATEGROUPS,
'expected' => [
't1' => 5,
't2' => 3, // User 1 two attempts, teacher 2 one attempt (counted).
's1' => null,
],
'With visible groups' => [
'groupmode' => VISIBLEGROUPS,
'expected' => [
't1' => 5,
't2' => 5,
's1' => null,
],
];
yield 'With visible groups' => [
'groupmode' => VISIBLEGROUPS,
'expected' => [
't1' => 5,
't2' => 5,
's1' => null,
],
];
}
@@ -253,33 +247,31 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_students_who_attempted_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_students_who_attempted_overview(): array {
return [
'With no groups' => [
'groupmode' => NOGROUPS,
'expected' => [
't1' => "3 of 4", // 3 students and one teacher out (not counted) of 4 made at least one attempt.
't2' => "3 of 4",
's1' => null,
],
public static function provider_test_get_students_who_attempted_overview(): \Generator {
yield 'With no groups' => [
'groupmode' => NOGROUPS,
'expected' => [
't1' => "3 of 4", // 3 students and one teacher out (not counted) of 4 made at least one attempt.
't2' => "3 of 4",
's1' => null,
],
'With separate groups' => [
'groupmode' => SEPARATEGROUPS,
'expected' => [
't1' => "3 of 4", // Teacher 1 can see all groups.
't2' => "1 of 1", // Only student 1 in group 1 made at least one attempt.
's1' => null,
],
];
yield 'With separate groups' => [
'groupmode' => SEPARATEGROUPS,
'expected' => [
't1' => "3 of 4", // Teacher 1 can see all groups.
't2' => "1 of 1", // Only student 1 in group 1 made at least one attempt.
's1' => null,
],
'With visible groups' => [
'groupmode' => VISIBLEGROUPS,
'expected' => [
't1' => "3 of 4", // 3 students and one teacher out (not counted) of 4 made at least one attempt.
't2' => "3 of 4",
's1' => null,
],
];
yield 'With visible groups' => [
'groupmode' => VISIBLEGROUPS,
'expected' => [
't1' => "3 of 4", // 3 students and one teacher out (not counted) of 4 made at least one attempt.
't2' => "3 of 4",
's1' => null,
],
];
}
@@ -77,22 +77,20 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_due_date_overview.
*
* @return array
* @return \Generator
*/
public static function get_due_date_overview_data(): array {
return [
'tomorrow' => [
'timeincrement' => DAYSECS,
],
'yesterday' => [
'timeincrement' => -1 * DAYSECS,
],
'today' => [
'timeincrement' => 0,
],
'No date' => [
'timeincrement' => null,
],
public static function get_due_date_overview_data(): \Generator {
yield 'tomorrow' => [
'timeincrement' => DAYSECS,
];
yield 'yesterday' => [
'timeincrement' => -1 * DAYSECS,
];
yield 'today' => [
'timeincrement' => 0,
];
yield 'No date' => [
'timeincrement' => null,
];
}
@@ -248,181 +246,179 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_studentsattempted_overview and test_get_extra_totalattempts_overview
*
* @return array
* @return \Generator
*/
public static function get_extra_overview_items_data(): array {
public static function get_extra_overview_items_data(): \Generator {
// Here we intentionally just test the case where course mode is set to NOGROUPS as groups are is not
// yet supported by the overview page for SCORM module. This will be followed up in a future issue (MDL-85852).
return [
'teacher 1 - no groups with attempts' => [
'username' => 't1',
'activity' => 'withattempts',
'groupmode' => NOGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
],
],
yield 'teacher 1 - no groups with attempts' => [
'username' => 't1',
'activity' => 'withattempts',
'groupmode' => NOGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
],
],
'teacher 1 - no groups without attempts' => [
'username' => 't1',
'activity' => 'withoutattempts',
'groupmode' => NOGROUPS,
'expected' => [
'attempted' => [
'value' => 0,
'content' => '<strong>0</strong> of 4',
],
'totalattempts' => [
'value' => 0,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '0',
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
],
],
],
'teacher 2 - no groups' => [
'username' => 't2',
'activity' => 'withattempts',
'groupmode' => NOGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
];
yield 'teacher 1 - no groups without attempts' => [
'username' => 't1',
'activity' => 'withoutattempts',
'groupmode' => NOGROUPS,
'expected' => [
'attempted' => [
'value' => 0,
'content' => '<strong>0</strong> of 4',
],
'totalattempts' => [
'value' => 0,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '0',
],
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
],
],
];
yield 'teacher 2 - no groups' => [
'username' => 't2',
'activity' => 'withattempts',
'groupmode' => NOGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
],
],
],
'teacher 1 - separate group' => [
'username' => 't1',
'activity' => 'withattempts',
'groupmode' => SEPARATEGROUPS,
'expected' => [
'attempted' => [
'value' => 1,
'content' => '<strong>1</strong> of 2', // Teacher can also attempt, so s1 and t1 are counted.
],
'totalattempts' => [
'value' => 1, // Attempt from s1 only.
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
];
yield 'teacher 1 - separate group' => [
'username' => 't1',
'activity' => 'withattempts',
'groupmode' => SEPARATEGROUPS,
'expected' => [
'attempted' => [
'value' => 1,
'content' => '<strong>1</strong> of 2', // Teacher can also attempt, so s1 and t1 are counted.
],
'totalattempts' => [
'value' => 1, // Attempt from s1 only.
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
],
],
],
// Teacher 2 is not in any group, so no attempt can be counted and the overview will return an error.
// But still the attempts can be counted if we call directly the manager methods, so we just skip the test here.
'teacher 1 - visible group' => [
'username' => 't1',
'activity' => 'withattempts',
'groupmode' => VISIBLEGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
];
// Teacher 2 is not in any group, so no attempt can be counted and the overview will return an error.
// But still the attempts can be counted if we call directly the manager methods, so we just skip the test here.
yield 'teacher 1 - visible group' => [
'username' => 't1',
'activity' => 'withattempts',
'groupmode' => VISIBLEGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
],
],
],
'teacher 2 - visible group' => [
'username' => 't2',
'activity' => 'withattempts',
'groupmode' => VISIBLEGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
];
yield 'teacher 2 - visible group' => [
'username' => 't2',
'activity' => 'withattempts',
'groupmode' => VISIBLEGROUPS,
'expected' => [
'attempted' => [
'value' => 2,
'content' => '<strong>2</strong> of 4',
],
'totalattempts' => [
'value' => 2,
'items' => [
[
'label' => 'Grading method',
'value' => 'Highest attempt',
],
[
'label' => 'Allowed attempts per student',
'value' => 'Unlimited',
],
[
'label' => 'Average attempts per student',
'value' => '1',
],
],
],
@@ -32,13 +32,11 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for wiki modes.
*
* @return array
* @return \Generator
*/
public static function get_wiki_mode_provider(): array {
return [
'collaborative' => ['mode' => wiki_mode::COLLABORATIVE],
'individual' => ['mode' => wiki_mode::INDIVIDUAL],
];
public static function get_wiki_mode_provider(): \Generator {
yield 'collaborative' => ['mode' => wiki_mode::COLLABORATIVE];
yield 'individual' => ['mode' => wiki_mode::INDIVIDUAL];
}
/**
@@ -67,14 +65,12 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for get_extra_my_entries.
*
* @return array
* @return \Generator
*/
public static function get_extra_my_entries_provider(): array {
return [
'student 1' => ['s1', 1],
'student 2' => ['s2', 1],
'teacher 1' => ['t1', null], // Teacher 1 does not have any entries.
];
public static function get_extra_my_entries_provider(): \Generator {
yield 'student 1' => ['s1', 1];
yield 'student 2' => ['s2', 1];
yield 'teacher 1' => ['t1', null]; // Teacher 1 does not have any entries.
}
/**
@@ -143,28 +143,26 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_grade_item_names.
*
* @return array
* @return \Generator
*/
public static function data_provider_get_grade_item_names(): array {
return [
'student with submissions' => [
'user' => 'student',
'expectempty' => false,
'hassubmission' => true,
'hasassesment' => false,
],
'student with assessments' => [
'user' => 'student',
'expectempty' => false,
'hassubmission' => true,
'hasassesment' => true,
],
'teacher' => [
'user' => 'teacher',
'expectempty' => true,
'hassubmission' => false,
'hasassesment' => false,
],
public static function data_provider_get_grade_item_names(): \Generator {
yield 'student with submissions' => [
'user' => 'student',
'expectempty' => false,
'hassubmission' => true,
'hasassesment' => false,
];
yield 'student with assessments' => [
'user' => 'student',
'expectempty' => false,
'hassubmission' => true,
'hasassesment' => true,
];
yield 'teacher' => [
'user' => 'teacher',
'expectempty' => true,
'hassubmission' => false,
'hasassesment' => false,
];
}
@@ -208,50 +206,48 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_phase_overview.
*
* @return array
* @return \Generator
*/
public static function data_provider_get_extra_phase_overview(): array {
return [
'teacher setup phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SETUP,
],
'student setup phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
],
'teacher submission phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
],
'student submission phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
],
'teacher assessment phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
],
'student assessment phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
],
'teacher evaluation phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_EVALUATION,
],
'student evaluation phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
],
'teacher closed phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
],
'student closed phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
],
public static function data_provider_get_extra_phase_overview(): \Generator {
yield 'teacher setup phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SETUP,
];
yield 'student setup phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
];
yield 'teacher submission phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
];
yield 'student submission phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
];
yield 'teacher assessment phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
];
yield 'student assessment phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
];
yield 'teacher evaluation phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_EVALUATION,
];
yield 'student evaluation phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
];
yield 'teacher closed phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
];
yield 'student closed phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
];
}
@@ -316,82 +312,80 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_phase_overview.
*
* @return array
* @return \Generator
*/
public static function data_provider_get_extra_deadline_overview(): array {
public static function data_provider_get_extra_deadline_overview(): \Generator {
$submissionend = 3600;
$assessmentend = 7200;
return [
'teacher setup phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SETUP,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
],
'student setup phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
],
'teacher submission phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $submissionend,
],
'student submission phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $submissionend,
],
'teacher assessment phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $assessmentend,
],
'student assessment phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $assessmentend,
],
'teacher evaluation phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_EVALUATION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
],
'student evaluation phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
],
'teacher closed phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
],
'student closed phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
],
yield 'teacher setup phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SETUP,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
];
yield 'student setup phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
];
yield 'teacher submission phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $submissionend,
];
yield 'student submission phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $submissionend,
];
yield 'teacher assessment phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $assessmentend,
];
yield 'student assessment phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => $assessmentend,
];
yield 'teacher evaluation phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_EVALUATION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
];
yield 'student evaluation phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
];
yield 'teacher closed phase' => [
'user' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
];
yield 'student closed phase' => [
'user' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'submissionend' => $submissionend,
'assessmentend' => $assessmentend,
'expectedincrement' => null,
];
}
@@ -520,208 +514,206 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_submissions_overview.
*
* @return array
* @return \Generator
*/
public static function data_provider_get_extra_submissions_overview(): array {
return [
'teacher setup phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
],
'student setup phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
],
'teacher submission phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
],
'student submission phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
],
'teacher assessment phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
],
'student assessment phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
],
'teacher evaluation phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
],
'student evaluation phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
],
'teacher closed phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
],
'student closed phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
],
// Tests with assessments.
'teacher setup phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'student setup phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
],
'teacher submission phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'student submission phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
],
'teacher assessment phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'student assessment phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
],
'teacher evaluation phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'student evaluation phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
],
'teacher closed phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'student closed phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
],
// Group mode tests.
'teacher closed phase with group activity (separate groups)' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => SEPARATEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'non-editing teacher closed phase with group activity (separate groups)' => [
'role' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => SEPARATEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 1, 'assessments' => 1],
],
'student closed phase with group activity (separate groups)' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => SEPARATEGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
],
'teacher closed phase with group activity (visible groups)' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => VISIBLEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'non-editing teacher closed phase with group activity (visible groups)' => [
'role' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => VISIBLEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
],
'student closed phase with group activity (visible groups)' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => VISIBLEGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
],
public static function data_provider_get_extra_submissions_overview(): \Generator {
yield 'teacher setup phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
];
yield 'student setup phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
];
yield 'teacher submission phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
];
yield 'student submission phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
];
yield 'teacher assessment phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
];
yield 'student assessment phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
];
yield 'teacher evaluation phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
];
yield 'student evaluation phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
];
yield 'teacher closed phase without activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => false,
'expected' => ['submissions' => 0, 'assessments' => 0],
];
yield 'student closed phase without activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => false,
'expectnull' => true,
];
// Tests with assessments.
yield 'teacher setup phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'student setup phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SETUP,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
];
yield 'teacher submission phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'student submission phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_SUBMISSION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
];
yield 'teacher assessment phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'student assessment phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_ASSESSMENT,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
];
yield 'teacher evaluation phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'student evaluation phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_EVALUATION,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
];
yield 'teacher closed phase with activity' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'student closed phase with activity' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => NOGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
];
// Group mode tests.
yield 'teacher closed phase with group activity (separate groups)' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => SEPARATEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'non-editing teacher closed phase with group activity (separate groups)' => [
'role' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => SEPARATEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 1, 'assessments' => 1],
];
yield 'student closed phase with group activity (separate groups)' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => SEPARATEGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
];
yield 'teacher closed phase with group activity (visible groups)' => [
'role' => 'editingteacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => VISIBLEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'non-editing teacher closed phase with group activity (visible groups)' => [
'role' => 'teacher',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => VISIBLEGROUPS,
'hasstudentactivity' => true,
'expectnull' => false,
'expected' => ['submissions' => 2, 'assessments' => 3],
];
yield 'student closed phase with group activity (visible groups)' => [
'role' => 'student',
'currentphase' => \workshop::PHASE_CLOSED,
'groupmode' => VISIBLEGROUPS,
'hasstudentactivity' => true,
'expectnull' => true,
];
}
@@ -762,27 +754,25 @@ final class overview_test extends \advanced_testcase {
/**
* Data provider for test_get_actions_overview.
*
* @return array
* @return \Generator
*/
public static function provider_test_get_actions_overview(): array {
return [
'Student' => [
'role' => 'student',
'expected' => null,
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'role' => 'student',
'expected' => null,
];
yield 'Editing teacher' => [
'role' => 'editingteacher',
'expected' => [
'name' => get_string('actions'),
'value' => get_string('view'),
],
'Editing teacher' => [
'role' => 'editingteacher',
'expected' => [
'name' => get_string('actions'),
'value' => get_string('view'),
],
],
'Teacher' => [
'role' => 'teacher',
'expected' => [
'name' => get_string('actions'),
'value' => get_string('view'),
],
];
yield 'Teacher' => [
'role' => 'teacher',
'expected' => [
'name' => get_string('actions'),
'value' => get_string('view'),
],
];
}