diff --git a/mod/folder/tests/generator/lib.php b/mod/folder/tests/generator/lib.php new file mode 100644 index 00000000000..00c93b5d046 --- /dev/null +++ b/mod/folder/tests/generator/lib.php @@ -0,0 +1,49 @@ +. + +/** + * mod_folder data generator. + * + * @package mod_folder + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * mod_folder data generator class. + * + * @package mod_folder + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_folder_generator extends testing_module_generator { + + public function create_instance($record = null, array $options = null) { + // Add default values for folder. + $record = (array)$record + array('display' => 0); + if (!isset($record['showexpanded'])) { + $record['showexpanded'] = get_config('folder', 'showexpanded'); + } + if (!isset($record['files'])) { + $record['files'] = file_get_unused_draft_itemid(); + } + return parent::create_instance($record, (array)$options); + } +} diff --git a/mod/folder/tests/generator_test.php b/mod/folder/tests/generator_test.php new file mode 100644 index 00000000000..f97af26cf32 --- /dev/null +++ b/mod/folder/tests/generator_test.php @@ -0,0 +1,68 @@ +. + +/** + * mod_folder generator tests + * + * @package mod_folder + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** + * Genarator tests class for mod_folder. + * + * @package mod_folder + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_folder_generator_testcase extends advanced_testcase { + + public function test_create_instance() { + global $DB, $USER; + $this->resetAfterTest(); + $this->setAdminUser(); + + $course = $this->getDataGenerator()->create_course(); + + $this->assertFalse($DB->record_exists('folder', array('course' => $course->id))); + $folder = $this->getDataGenerator()->create_module('folder', array('course' => $course)); + $records = $DB->get_records('folder', array('course' => $course->id), 'id'); + $this->assertEquals(1, count($records)); + $this->assertTrue(array_key_exists($folder->id, $records)); + + $params = array('course' => $course->id, 'name' => 'Another folder'); + $folder = $this->getDataGenerator()->create_module('folder', $params); + $records = $DB->get_records('folder', array('course' => $course->id), 'id'); + $this->assertEquals(2, count($records)); + $this->assertEquals('Another folder', $records[$folder->id]->name); + + // Examples of adding a folder with files (do not validate anything, just check for exceptions). + $params = array( + 'course' => $course->id, + 'files' => file_get_unused_draft_itemid() + ); + $usercontext = context_user::instance($USER->id); + $filerecord = array('component' => 'user', 'filearea' => 'draft', + 'contextid' => $usercontext->id, 'itemid' => $params['files'], + 'filename' => 'file1.txt', 'filepath' => '/'); + $fs = get_file_storage(); + $fs->create_file_from_string($filerecord, 'Test file contents'); + $folder = $this->getDataGenerator()->create_module('folder', $params); + } +}