MDL-81267 mod_data: Additional tests

This commit is contained in:
Laurent David 2024-03-21 12:23:23 +01:00 committed by Sara Arjona
parent ffa045e099
commit ba9b291c03
No known key found for this signature in database
2 changed files with 125 additions and 0 deletions

View File

@ -0,0 +1,81 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace mod_data\backup;
/**
* Restore type tests.
*
* @package mod_data
* @copyright 2024 Laurent David <laurent.david@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class restore_type_test extends \advanced_testcase {
/**
* Data provider for test_duplicating_data_remove_unwanted_types.
*
* @return array[]
*/
public static function restore_format_test_provider(): array {
return [
'text' => [
'type' => 'text',
'expected' => 'text',
],
'picture' => [
'type' => 'picture',
'expected' => 'picture',
],
'wrong type' => [
'type' => '../wrongtype123',
'expected' => 'wrongtype',
],
];
}
/**
* Test that duplicating a database removes unwanted / invalid format.
*
* @param string $type The type of the field.
* @param string $expected The expected type of the field after duplication.
*
* @covers \restore_data_activity_structure_step
* @dataProvider restore_format_test_provider
*/
public function test_duplicating_data_remove_unwanted_types(string $type, string $expected): void {
global $DB;
$this->resetAfterTest();
$this->setAdminUser();
// Make a test course.
$generator = $this->getDataGenerator();
$course = $generator->create_course();
$data = $this->getDataGenerator()->create_module('data', ['course' => $course->id]);
$this->getDataGenerator()->get_plugin_generator('mod_data')->create_field(
(object) ['name' => 'field', 'type' => $type],
$data
);
// Duplicate the data module with the type.
$newdata = duplicate_module($course, get_fast_modinfo($course)->get_cm($data->cmid));
// Verify the settings of the duplicated activity.
$fields = $DB->get_records('data_fields', ['dataid' => $newdata->instance], 'id');
$newfield = reset($fields);
$this->assertEquals($expected, $newfield->type);
}
}

View File

@ -2165,4 +2165,48 @@ class lib_test extends \advanced_testcase {
],
];
}
/**
* Test that format that are not supported are raising an exception
*
* @param string $type
* @param string $expected
* @covers \data_get_field_new
* @dataProvider format_parser_provider
*/
public function test_create_field(string $type, string $expected) {
$this->resetAfterTest();
$this->setAdminUser();
$generator = $this->getDataGenerator();
$course = $generator->create_course();
$data = $this->getDataGenerator()->create_module('data', ['course' => $course->id] );
if ($expected === 'exception') {
$this->expectException(\moodle_exception::class);
}
$field = data_get_field_new($type, $data);
$this->assertStringContainsString($expected, get_class($field));
}
/**
* Data provider for test_format_parser
*
* @return array[]
*/
public static function format_parser_provider(): array {
return [
'text' => [
'type' => 'text',
'expected' => 'data_field_text',
],
'picture' => [
'type' => 'picture',
'expected' => 'data_field_picture',
],
'wrong type' => [
'type' => '../wrongformat123',
'expected' => 'exception',
],
];
}
}