diff --git a/mod/data/tests/lib_test.php b/mod/data/tests/lib_test.php new file mode 100644 index 00000000000..6941825a5e5 --- /dev/null +++ b/mod/data/tests/lib_test.php @@ -0,0 +1,107 @@ +. + +/** + * Unit tests for lib.php + * + * @package mod_data + * @category phpunit + * @copyright 2013 Adrian Greeve + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; +require_once($CFG->dirroot . '/mod/data/lib.php'); + +/** + * Unit tests for lib.php + * + * @package mod_data + * @copyright 2013 Adrian Greeve + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class data_lib_testcase extends advanced_testcase { + + function test_data_delete_record() { + global $DB; + + $this->resetAfterTest(); + + // Create a record for deleting. + $this->setAdminUser(); + $course = $this->getDataGenerator()->create_course(); + $record = new stdClass(); + $record->course = $course->id; + $record->name = "Mod data delete test"; + $record->intro = "Some intro of some sort"; + + $module = $this->getDataGenerator()->create_module('data', $record); + + $field = data_get_field_new('text', $module); + + $fielddetail = new stdClass(); + $fielddetail->d = $module->id; + $fielddetail->mode = 'add'; + $fielddetail->type = 'text'; + $fielddetail->sesskey = sesskey(); + $fielddetail->name = 'Name'; + $fielddetail->description = 'Some name'; + + $field->define_field($fielddetail); + $field->insert_field(); + $recordid = data_add_record($module); + + $datacontent = array(); + $datacontent['fieldid'] = $field->field->id; + $datacontent['recordid'] = $recordid; + $datacontent['content'] = 'Asterix'; + + $contentid = $DB->insert_record('data_content', $datacontent); + $cm = get_coursemodule_from_instance('data', $module->id, $course->id); + + // Check to make sure that we have a database record. + $data = $DB->get_records('data', array('id' => $module->id)); + $this->assertEquals(1, count($data)); + + $datacontent = $DB->get_records('data_content', array('id' => $contentid)); + $this->assertEquals(1, count($datacontent)); + + $datafields = $DB->get_records('data_fields', array('id' => $field->field->id)); + $this->assertEquals(1, count($datafields)); + + $datarecords = $DB->get_records('data_records', array('id' => $recordid)); + $this->assertEquals(1, count($datarecords)); + + // Test to see if a failed delete returns false. + $result = data_delete_record(8798, $module, $course->id, $cm->id); + $this->assertFalse($result); + + // Delete the record. + $result = data_delete_record($recordid, $module, $course->id, $cm->id); + + // Check that all of the record is gone. + $datacontent = $DB->get_records('data_content', array('id' => $contentid)); + $this->assertEquals(0, count($datacontent)); + + $datarecords = $DB->get_records('data_records', array('id' => $recordid)); + $this->assertEquals(0, count($datarecords)); + + // Make sure the function returns true on a successful deletion. + $this->assertTrue($result); + } +} \ No newline at end of file