MDL-86283 core_courseformat: improve overview data providers

This commit is contained in:
ferran
2025-09-10 15:39:38 +02:00
parent 6ee48e3d9b
commit b0a08098ca
3 changed files with 382 additions and 260 deletions
@@ -60,92 +60,90 @@ final class overviewfactory_test extends \advanced_testcase {
/**
* Data provider for test_create_resource.
*
* @return array
* @return \Generator
*/
public static function create_resource_provider(): array {
return [
// Resource activities.
'book' => [
'resourcetype' => 'book',
'expected' => resourceoverview::class,
],
'folder' => [
'resourcetype' => 'folder',
'expected' => resourceoverview::class,
],
'page' => [
'resourcetype' => 'page',
'expected' => resourceoverview::class,
],
'resource' => [
'resourcetype' => 'resource',
'expected' => resourceoverview::class,
],
'url' => [
'resourcetype' => 'url',
'expected' => resourceoverview::class,
],
// Fallbacks and integrations.
'assign' => [
'resourcetype' => 'assign',
'expected' => \mod_assign\courseformat\overview::class,
],
'bigbluebuttonbn' => [
'resourcetype' => 'bigbluebuttonbn',
'expected' => \mod_bigbluebuttonbn\courseformat\overview::class,
],
'choice' => [
'resourcetype' => 'choice',
'expected' => \mod_choice\courseformat\overview::class,
],
'data' => [
'resourcetype' => 'data',
'expected' => \mod_data\courseformat\overview::class,
],
'feedback' => [
'resourcetype' => 'feedback',
'expected' => \mod_feedback\courseformat\overview::class,
],
'forum' => [
'resourcetype' => 'forum',
'expected' => \mod_forum\courseformat\overview::class,
],
'glossary' => [
'resourcetype' => 'glossary',
'expected' => \mod_glossary\courseformat\overview::class,
],
'h5pactivity' => [
'resourcetype' => 'h5pactivity',
'expected' => \mod_h5pactivity\courseformat\overview::class,
],
'lesson' => [
'resourcetype' => 'lesson',
'expected' => \mod_lesson\courseformat\overview::class,
],
'lti' => [
'resourcetype' => 'lti',
'expected' => resourceoverview::class,
],
'qbank' => [
'resourcetype' => 'qbank',
'expected' => resourceoverview::class,
],
'quiz' => [
'resourcetype' => 'quiz',
'expected' => \mod_quiz\courseformat\overview::class,
],
'scorm' => [
'resourcetype' => 'scorm',
'expected' => \mod_scorm\courseformat\overview::class,
],
'wiki' => [
'resourcetype' => 'wiki',
'expected' => \mod_wiki\courseformat\overview::class,
],
'workshop' => [
'resourcetype' => 'workshop',
'expected' => \mod_workshop\courseformat\overview::class,
],
public static function create_resource_provider(): \Generator {
// Resource activities.
yield 'book' => [
'resourcetype' => 'book',
'expected' => resourceoverview::class,
];
yield 'folder' => [
'resourcetype' => 'folder',
'expected' => resourceoverview::class,
];
yield 'page' => [
'resourcetype' => 'page',
'expected' => resourceoverview::class,
];
yield 'resource' => [
'resourcetype' => 'resource',
'expected' => resourceoverview::class,
];
yield 'url' => [
'resourcetype' => 'url',
'expected' => resourceoverview::class,
];
yield // Fallbacks and integrations.
'assign' => [
'resourcetype' => 'assign',
'expected' => \mod_assign\courseformat\overview::class,
];
yield 'bigbluebuttonbn' => [
'resourcetype' => 'bigbluebuttonbn',
'expected' => \mod_bigbluebuttonbn\courseformat\overview::class,
];
yield 'choice' => [
'resourcetype' => 'choice',
'expected' => \mod_choice\courseformat\overview::class,
];
yield 'data' => [
'resourcetype' => 'data',
'expected' => \mod_data\courseformat\overview::class,
];
yield 'feedback' => [
'resourcetype' => 'feedback',
'expected' => \mod_feedback\courseformat\overview::class,
];
yield 'forum' => [
'resourcetype' => 'forum',
'expected' => \mod_forum\courseformat\overview::class,
];
yield 'glossary' => [
'resourcetype' => 'glossary',
'expected' => \mod_glossary\courseformat\overview::class,
];
yield 'h5pactivity' => [
'resourcetype' => 'h5pactivity',
'expected' => \mod_h5pactivity\courseformat\overview::class,
];
yield 'lesson' => [
'resourcetype' => 'lesson',
'expected' => \mod_lesson\courseformat\overview::class,
];
yield 'lti' => [
'resourcetype' => 'lti',
'expected' => resourceoverview::class,
];
yield 'qbank' => [
'resourcetype' => 'qbank',
'expected' => resourceoverview::class,
];
yield 'quiz' => [
'resourcetype' => 'quiz',
'expected' => \mod_quiz\courseformat\overview::class,
];
yield 'scorm' => [
'resourcetype' => 'scorm',
'expected' => \mod_scorm\courseformat\overview::class,
];
yield 'wiki' => [
'resourcetype' => 'wiki',
'expected' => \mod_wiki\courseformat\overview::class,
];
yield 'workshop' => [
'resourcetype' => 'workshop',
'expected' => \mod_workshop\courseformat\overview::class,
];
}
@@ -192,32 +190,96 @@ final class overviewfactory_test extends \advanced_testcase {
/**
* Data provider for test_overview_integrations.
*
* @return array
* @return \Generator
*/
public static function activity_has_overview_integration_provider(): array {
return [
'assign' => ['modname' => 'assign', 'hasintegration' => true],
'bigbluebuttonbn' => ['modname' => 'bigbluebuttonbn', 'hasintegration' => true],
'book' => ['modname' => 'book', 'hasintegration' => false],
'choice' => ['modname' => 'choice', 'hasintegration' => true],
'data' => ['modname' => 'data', 'hasintegration' => true],
'feedback' => ['modname' => 'feedback', 'hasintegration' => true],
'folder' => ['modname' => 'folder', 'hasintegration' => false],
'forum' => ['modname' => 'forum', 'hasintegration' => true],
'glossary' => ['modname' => 'glossary', 'hasintegration' => true],
'h5pactivity' => ['modname' => 'h5pactivity', 'hasintegration' => true],
'imscp' => ['modname' => 'imscp', 'hasintegration' => false],
'label' => ['modname' => 'label', 'hasintegration' => false],
'lesson' => ['modname' => 'lesson', 'hasintegration' => true],
'lti' => ['modname' => 'lti', 'hasintegration' => false],
'page' => ['modname' => 'page', 'hasintegration' => false],
'qbank' => ['modname' => 'qbank', 'hasintegration' => false],
'quiz' => ['modname' => 'quiz', 'hasintegration' => true],
'resource' => ['modname' => 'resource', 'hasintegration' => true],
'scorm' => ['modname' => 'scorm', 'hasintegration' => true],
'url' => ['modname' => 'url', 'hasintegration' => false],
'wiki' => ['modname' => 'wiki', 'hasintegration' => true],
'workshop' => ['modname' => 'workshop', 'hasintegration' => true],
public static function activity_has_overview_integration_provider(): \Generator {
yield 'assign' => [
'modname' => 'assign',
'hasintegration' => true,
];
yield 'bigbluebuttonbn' => [
'modname' => 'bigbluebuttonbn',
'hasintegration' => true,
];
yield 'book' => [
'modname' => 'book',
'hasintegration' => false,
];
yield 'choice' => [
'modname' => 'choice',
'hasintegration' => true,
];
yield 'data' => [
'modname' => 'data',
'hasintegration' => true,
];
yield 'feedback' => [
'modname' => 'feedback',
'hasintegration' => true,
];
yield 'folder' => [
'modname' => 'folder',
'hasintegration' => false,
];
yield 'forum' => [
'modname' => 'forum',
'hasintegration' => true,
];
yield 'glossary' => [
'modname' => 'glossary',
'hasintegration' => true,
];
yield 'h5pactivity' => [
'modname' => 'h5pactivity',
'hasintegration' => true,
];
yield 'imscp' => [
'modname' => 'imscp',
'hasintegration' => false,
];
yield 'label' => [
'modname' => 'label',
'hasintegration' => false,
];
yield 'lesson' => [
'modname' => 'lesson',
'hasintegration' => true,
];
yield 'lti' => [
'modname' => 'lti',
'hasintegration' => false,
];
yield 'page' => [
'modname' => 'page',
'hasintegration' => false,
];
yield 'qbank' => [
'modname' => 'qbank',
'hasintegration' => false,
];
yield 'quiz' => [
'modname' => 'quiz',
'hasintegration' => true,
];
yield 'resource' => [
'modname' => 'resource',
'hasintegration' => true,
];
yield 'scorm' => [
'modname' => 'scorm',
'hasintegration' => true,
];
yield 'url' => [
'modname' => 'url',
'hasintegration' => false,
];
yield 'wiki' => [
'modname' => 'wiki',
'hasintegration' => true,
];
yield 'workshop' => [
'modname' => 'workshop',
'hasintegration' => true,
];
}
@@ -66,66 +66,64 @@ final class resourceoverview_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',
'resourcetype' => 'url',
'expected' => null,
public static function provider_test_get_actions_overview(): \Generator {
yield 'Student' => [
'role' => 'student',
'resourcetype' => 'url',
'expected' => null,
];
yield 'Teacher - Book' => [
'role' => 'editingteacher',
'resourcetype' => 'book',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
'Teacher - Book' => [
'role' => 'editingteacher',
'resourcetype' => 'book',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
];
yield 'Teacher - Folder' => [
'role' => 'editingteacher',
'resourcetype' => 'folder',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
'Teacher - Folder' => [
'role' => 'editingteacher',
'resourcetype' => 'folder',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
];
yield 'Teacher - Page' => [
'role' => 'editingteacher',
'resourcetype' => 'page',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
'Teacher - Page' => [
'role' => 'editingteacher',
'resourcetype' => 'page',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
];
yield 'Teacher - Resource' => [
'role' => 'editingteacher',
'resourcetype' => 'resource',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
'Teacher - Resource' => [
'role' => 'editingteacher',
'resourcetype' => 'resource',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
],
'Teacher - URL' => [
'role' => 'editingteacher',
'resourcetype' => 'url',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
],
'Teacher - Non resource' => [
'role' => 'editingteacher',
'resourcetype' => 'lti',
'expected' => null,
];
yield 'Teacher - URL' => [
'role' => 'editingteacher',
'resourcetype' => 'url',
'expected' => [
'name' => get_string('actions'),
'value' => '',
'content' => get_string('view'),
],
];
yield 'Teacher - Non resource' => [
'role' => 'editingteacher',
'resourcetype' => 'lti',
'expected' => null,
];
}
/**
@@ -198,79 +196,77 @@ final class resourceoverview_test extends \advanced_testcase {
/**
* Data provider for test_get_extra_type_overview.
*
* @return array
* @return \Generator
*/
public static function get_extra_type_overview_provider(): array {
return [
'book' => [
'resourcetype' => 'book',
'expected' => 'Book',
],
'folder' => [
'resourcetype' => 'folder',
'expected' => 'Folder',
],
'page' => [
'resourcetype' => 'page',
'expected' => 'Page',
],
'resource' => [
'resourcetype' => 'resource',
'expected' => 'File',
],
'url' => [
'resourcetype' => 'url',
'expected' => 'URL',
],
// Non-resource activities.
'bigbluebuttonbn' => [
'resourcetype' => 'bigbluebuttonbn',
'expected' => null,
],
'choice' => [
'resourcetype' => 'choice',
'expected' => null,
],
'data' => [
'resourcetype' => 'data',
'expected' => null,
],
'forum' => [
'resourcetype' => 'forum',
'expected' => null,
],
'glossary' => [
'resourcetype' => 'glossary',
'expected' => null,
],
'h5pactivity' => [
'resourcetype' => 'h5pactivity',
'expected' => null,
],
'lesson' => [
'resourcetype' => 'lesson',
'expected' => null,
],
'lti' => [
'resourcetype' => 'lti',
'expected' => null,
],
'qbank' => [
'resourcetype' => 'qbank',
'expected' => null,
],
'quiz' => [
'resourcetype' => 'quiz',
'expected' => null,
],
'scorm' => [
'resourcetype' => 'scorm',
'expected' => null,
],
'wiki' => [
'resourcetype' => 'wiki',
'expected' => null,
],
public static function get_extra_type_overview_provider(): \Generator {
yield 'book' => [
'resourcetype' => 'book',
'expected' => 'Book',
];
yield 'folder' => [
'resourcetype' => 'folder',
'expected' => 'Folder',
];
yield 'page' => [
'resourcetype' => 'page',
'expected' => 'Page',
];
yield 'resource' => [
'resourcetype' => 'resource',
'expected' => 'File',
];
yield 'url' => [
'resourcetype' => 'url',
'expected' => 'URL',
];
// Non-resource activities.
yield 'bigbluebuttonbn' => [
'resourcetype' => 'bigbluebuttonbn',
'expected' => null,
];
yield 'choice' => [
'resourcetype' => 'choice',
'expected' => null,
];
yield 'data' => [
'resourcetype' => 'data',
'expected' => null,
];
yield 'forum' => [
'resourcetype' => 'forum',
'expected' => null,
];
yield 'glossary' => [
'resourcetype' => 'glossary',
'expected' => null,
];
yield 'h5pactivity' => [
'resourcetype' => 'h5pactivity',
'expected' => null,
];
yield 'lesson' => [
'resourcetype' => 'lesson',
'expected' => null,
];
yield 'lti' => [
'resourcetype' => 'lti',
'expected' => null,
];
yield 'qbank' => [
'resourcetype' => 'qbank',
'expected' => null,
];
yield 'quiz' => [
'resourcetype' => 'quiz',
'expected' => null,
];
yield 'scorm' => [
'resourcetype' => 'scorm',
'expected' => null,
];
yield 'wiki' => [
'resourcetype' => 'wiki',
'expected' => null,
];
}
}
@@ -57,32 +57,96 @@ final class missingoverviewnotice_test extends \advanced_testcase {
/**
* Data provider for test_overview_integrations.
*
* @return array
* @return \Generator
*/
public static function overview_integrations_provider(): array {
return [
'assign' => ['modname' => 'assign', 'expectempty' => true],
'bigbluebuttonbn' => ['modname' => 'bigbluebuttonbn', 'expectempty' => true],
'book' => ['modname' => 'book', 'expectempty' => false],
'choice' => ['modname' => 'choice', 'expectempty' => true],
'data' => ['modname' => 'data', 'expectempty' => true],
'feedback' => ['modname' => 'feedback', 'expectempty' => true],
'folder' => ['modname' => 'folder', 'expectempty' => false],
'forum' => ['modname' => 'forum', 'expectempty' => true],
'glossary' => ['modname' => 'glossary', 'expectempty' => true],
'h5pactivity' => ['modname' => 'h5pactivity', 'expectempty' => true],
'imscp' => ['modname' => 'imscp', 'expectempty' => false],
'label' => ['modname' => 'label', 'expectempty' => false],
'lesson' => ['modname' => 'lesson', 'expectempty' => true],
'lti' => ['modname' => 'lti', 'expectempty' => false],
'page' => ['modname' => 'page', 'expectempty' => false],
'qbank' => ['modname' => 'qbank', 'expectempty' => false],
'quiz' => ['modname' => 'quiz', 'expectempty' => true],
'resource' => ['modname' => 'resource', 'expectempty' => true],
'scorm' => ['modname' => 'scorm', 'expectempty' => true],
'url' => ['modname' => 'url', 'expectempty' => false],
'wiki' => ['modname' => 'wiki', 'expectempty' => true],
'workshop' => ['modname' => 'workshop', 'expectempty' => true],
public static function overview_integrations_provider(): \Generator {
yield 'assign' => [
'modname' => 'assign',
'expectempty' => true,
];
yield 'bigbluebuttonbn' => [
'modname' => 'bigbluebuttonbn',
'expectempty' => true,
];
yield 'book' => [
'modname' => 'book',
'expectempty' => false,
];
yield 'choice' => [
'modname' => 'choice',
'expectempty' => true,
];
yield 'data' => [
'modname' => 'data',
'expectempty' => true,
];
yield 'feedback' => [
'modname' => 'feedback',
'expectempty' => true,
];
yield 'folder' => [
'modname' => 'folder',
'expectempty' => false,
];
yield 'forum' => [
'modname' => 'forum',
'expectempty' => true,
];
yield 'glossary' => [
'modname' => 'glossary',
'expectempty' => true,
];
yield 'h5pactivity' => [
'modname' => 'h5pactivity',
'expectempty' => true,
];
yield 'imscp' => [
'modname' => 'imscp',
'expectempty' => false,
];
yield 'label' => [
'modname' => 'label',
'expectempty' => false,
];
yield 'lesson' => [
'modname' => 'lesson',
'expectempty' => true,
];
yield 'lti' => [
'modname' => 'lti',
'expectempty' => false,
];
yield 'page' => [
'modname' => 'page',
'expectempty' => false,
];
yield 'qbank' => [
'modname' => 'qbank',
'expectempty' => false,
];
yield 'quiz' => [
'modname' => 'quiz',
'expectempty' => true,
];
yield 'resource' => [
'modname' => 'resource',
'expectempty' => true,
];
yield 'scorm' => [
'modname' => 'scorm',
'expectempty' => true,
];
yield 'url' => [
'modname' => 'url',
'expectempty' => false,
];
yield 'wiki' => [
'modname' => 'wiki',
'expectempty' => true,
];
yield 'workshop' => [
'modname' => 'workshop',
'expectempty' => true,
];
}
}