From b0429d00735d121bfb8f89c1f8b327dc62d019fa Mon Sep 17 00:00:00 2001 From: Petr Skoda Date: Sun, 8 Apr 2012 11:30:13 +0200 Subject: [PATCH] MDL-32323 add basic mod_assignment data generator --- mod/assignment/tests/generator/lib.php | 81 +++++++++++++++++++++++++ mod/assignment/tests/test_generator.php | 63 +++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 mod/assignment/tests/generator/lib.php create mode 100644 mod/assignment/tests/test_generator.php diff --git a/mod/assignment/tests/generator/lib.php b/mod/assignment/tests/generator/lib.php new file mode 100644 index 00000000000..353d6f92043 --- /dev/null +++ b/mod/assignment/tests/generator/lib.php @@ -0,0 +1,81 @@ +. + +/** + * mod_assignment data generator + * + * @package mod_assignment + * @category phpunit + * @copyright 2012 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + + +/** + * Assignment module PHPUnit data generator class + * + * @package mod_assignment + * @category phpunit + * @copyright 2012 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_assignment_generator extends phpunit_module_generator { + + /** + * Create new assignment module instance + * @param array|stdClass $record + * @param array $options + * @return stdClass activity record with extra cmid field + */ + public function create_instance($record = null, array $options = null) { + global $DB, $CFG; + require_once("$CFG->dirroot/mod/assignment/locallib.php"); + + $this->instancecount++; + $i = $this->instancecount; + + $record = (object)(array)$record; + $options = (array)$options; + + if (!isset($record->name)) { + $record->name = get_string('pluginname', 'assignment').' '.$i; + } + if (!isset($record->intro)) { + $record->intro = 'Test assignment '.$i; + } + if (!isset($record->introformat)) { + $record->introformat = FORMAT_MOODLE; + } + if (!isset($record->assignmenttype)) { + $record->assignmenttype = 'upload'; + } + if (!isset($record->grade)) { + $record->grade = 100; + } + $record->timemodified = time(); + + $id = $DB->insert_record('assignment', $record); + $instance = $DB->get_record('assignment', array('id'=>$id), '*', MUST_EXIST); + + $cm = $this->create_course_module($instance, $options); + + $instance->cmid = $cm->id; + + return $instance; + } +} diff --git a/mod/assignment/tests/test_generator.php b/mod/assignment/tests/test_generator.php new file mode 100644 index 00000000000..2ce361b455f --- /dev/null +++ b/mod/assignment/tests/test_generator.php @@ -0,0 +1,63 @@ +. + +/** + * PHPUnit data generator tests + * + * @package mod_assignment + * @category phpunit + * @copyright 2012 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + + +/** + * PHPUnit data generator testcase + * + * @package mod_assignment + * @category phpunit + * @copyright 2012 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_assignment_generator_testcase extends advanced_testcase { + public function test_geenrator() { + global $DB, $SITE; + + $this->resetAfterTest(true); + + $this->assertEquals(0, $DB->count_records('assignment')); + + /** @var mod_assignment_generator $generator */ + $generator = $this->getDataGenerator()->get_plugin_generator('mod_assignment'); + $this->assertInstanceOf('mod_assignment_generator', $generator); + $this->assertEquals('assignment', $generator->get_modulename()); + + $generator->create_instance(array('course'=>$SITE->id)); + $generator->create_instance(array('course'=>$SITE->id)); + $assignment = $generator->create_instance(array('course'=>$SITE->id)); + $this->assertEquals(3, $DB->count_records('assignment')); + + $cm = get_coursemodule_from_instance('assignment', $assignment->id); + $this->assertEquals($assignment->id, $cm->instance); + $this->assertEquals('assignment', $cm->modname); + $this->assertEquals($SITE->id, $cm->course); + + $context = context_module::instance($cm->id); + $this->assertEquals($assignment->cmid, $context->instanceid); + } +}