From 3bbbb3c90270931b3d6d9a2034d97c7165e3fe85 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Mon, 21 Oct 2013 12:33:00 +1100 Subject: [PATCH] MDL-42400 mod_workshop: data generator for workshop --- mod/workshop/tests/generator/lib.php | 100 ++++++++++++++++++++++++++ mod/workshop/tests/generator_test.php | 55 ++++++++++++++ 2 files changed, 155 insertions(+) create mode 100644 mod/workshop/tests/generator/lib.php create mode 100644 mod/workshop/tests/generator_test.php diff --git a/mod/workshop/tests/generator/lib.php b/mod/workshop/tests/generator/lib.php new file mode 100644 index 00000000000..7f3713588a9 --- /dev/null +++ b/mod/workshop/tests/generator/lib.php @@ -0,0 +1,100 @@ +. + +/** + * mod_workshop data generator. + * + * @package mod_workshop + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * mod_workshop data generator class. + * + * @package mod_workshop + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_workshop_generator extends testing_module_generator { + + public function create_instance($record = null, array $options = null) { + global $CFG; + require_once($CFG->libdir.'/filelib.php'); + + $workshopconfig = get_config('workshop'); + + // Add default values for workshop. + $record = (array)$record + array( + 'strategy' => $workshopconfig->strategy, + 'grade' => $workshopconfig->grade, + 'gradinggrade' => $workshopconfig->gradinggrade, + 'gradedecimals' => $workshopconfig->gradedecimals, + 'nattachments' => 1, + 'maxbytes' => $workshopconfig->maxbytes, + 'latesubmissions' => 0, + 'useselfassessment' => 0, + 'overallfeedbackmode' => 1, + 'overallfeedbackfiles' => 0, + 'overallfeedbackmaxbytes' => $workshopconfig->maxbytes, + 'useexamples' => 0, + 'examplesmode' => $workshopconfig->examplesmode, + 'submissionstart' => 0, + 'submissionend' => 0, + 'phaseswitchassessment' => 0, + 'assessmentstart' => 0, + 'assessmentend' => 0, + ); + if (!isset($record['gradecategory']) || !isset($record['gradinggradecategory'])) { + require_once($CFG->libdir.'/gradelib.php'); + $courseid = is_object($record['course']) ? $record['course']->id : $record['course']; + $gradecategories = grade_get_categories_menu($courseid); + reset($gradecategories); + $defaultcategory = key($gradecategories); + $record += array( + 'gradecategory' => $defaultcategory, + 'gradinggradecategory' => $defaultcategory + ); + } + if (!isset($record['instructauthorseditor'])) { + $record['instructauthorseditor'] = array( + 'text' => 'Instructions for submission '.($this->instancecount+1), + 'format' => FORMAT_MOODLE, + 'itemid' => file_get_unused_draft_itemid() + ); + } + if (!isset($record['instructreviewerseditor'])) { + $record['instructreviewerseditor'] = array( + 'text' => 'Instructions for assessment '.($this->instancecount+1), + 'format' => FORMAT_MOODLE, + 'itemid' => file_get_unused_draft_itemid() + ); + } + if (!isset($record['conclusioneditor'])) { + $record['conclusioneditor'] = array( + 'text' => 'Conclusion '.($this->instancecount+1), + 'format' => FORMAT_MOODLE, + 'itemid' => file_get_unused_draft_itemid() + ); + } + + return parent::create_instance($record, (array)$options); + } +} diff --git a/mod/workshop/tests/generator_test.php b/mod/workshop/tests/generator_test.php new file mode 100644 index 00000000000..ef39f387567 --- /dev/null +++ b/mod/workshop/tests/generator_test.php @@ -0,0 +1,55 @@ +. + +/** + * mod_workshop generator tests + * + * @package mod_workshop + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** + * Genarator tests class for mod_workshop. + * + * @package mod_workshop + * @category test + * @copyright 2013 Marina Glancy + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_workshop_generator_testcase extends advanced_testcase { + + public function test_create_instance() { + global $DB; + $this->resetAfterTest(); + $this->setAdminUser(); + + $course = $this->getDataGenerator()->create_course(); + + $this->assertFalse($DB->record_exists('workshop', array('course' => $course->id))); + $workshop = $this->getDataGenerator()->create_module('workshop', array('course' => $course)); + $records = $DB->get_records('workshop', array('course' => $course->id), 'id'); + $this->assertEquals(1, count($records)); + $this->assertTrue(array_key_exists($workshop->id, $records)); + + $params = array('course' => $course->id, 'name' => 'Another workshop'); + $workshop = $this->getDataGenerator()->create_module('workshop', $params); + $records = $DB->get_records('workshop', array('course' => $course->id), 'id'); + $this->assertEquals(2, count($records)); + $this->assertEquals('Another workshop', $records[$workshop->id]->name); + } +}