]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-16486 Only using one test $DB connection. Completed most of the implementation...
authornicolasconnault <nicolasconnault>
Mon, 22 Sep 2008 07:06:08 +0000 (07:06 +0000)
committernicolasconnault <nicolasconnault>
Mon, 22 Sep 2008 07:06:08 +0000 (07:06 +0000)
lang/en_utf8/simpletest.php
lib/simpletest/fixtures/gradetest.php
lib/simpletestlib.php
mod/forum/lib.php

index 5eab9a4cde550b12ee6728036e687e5267f9128e..e0d2ccfbccf3e58a3bf782c7ecbeb9f0f961b16e 100644 (file)
@@ -31,6 +31,7 @@ $string['showsearch'] = 'Show the search for test files.';
 $string['stacktrace'] = 'Stack trace:';
 $string['summary'] = '{$a->run}/{$a->total} test cases complete: <strong>{$a->passes}</strong> passes, <strong>{$a->fails}</strong> fails and <strong>{$a->exceptions}</strong> exceptions.';
 $string['tablesnotsetup'] = 'Unit test tables are not yet built. Do you want to build them now?.';
+$string['testtablesok'] = 'The test DB tables were successfully installed.';
 $string['testtablescsvfileunwritable'] = 'The test tables CSV file is not writable ($a->filename)';
 $string['thorough'] = 'Run a thorough test (may be slow).';
 $string['updatingnoninsertedrecord'] = 'Trying to update a record that was not inserted by these unit tests (id $a->id in table $a->table).';
index eee7c51533fdddc1d1452a332ff15b235f1db0a4..e329dcab31e1de6360c746654f314ee30b028031 100644 (file)
@@ -52,10 +52,10 @@ Mock::generate('grade_outcome', 'mock_grade_outcome');
 class grade_test extends MoodleUnitTestCase {
 
     public $grade_tables = array('grade_categories',
-                        'scale',
-                        'grade_items',
-                        'grade_grades',
-                        'grade_outcomes');
+                                'scale',
+                                'grade_items',
+                                'grade_grades',
+                                'grade_outcomes');
 
 
     public $grade_items = array();
@@ -67,7 +67,6 @@ class grade_test extends MoodleUnitTestCase {
     public $activities = array();
     public $courseid = 1;
     public $userid = 1;
-    public $dbmanager;
 
     /**
      * Create temporary test tables and entries in the database for these tests.
@@ -75,7 +74,6 @@ class grade_test extends MoodleUnitTestCase {
      */
     function setUp() {
         global $CFG, $DB;
-        $this->dbmanager = $DB->get_manager();
 
         parent::setup();
         $CFG->grade_droplow = -1;
@@ -85,532 +83,12 @@ class grade_test extends MoodleUnitTestCase {
         $CFG->grade_aggregateoutcomes = -1;
         $CFG->grade_aggregatesubcats = -1;
 
-        if (!$this->prepare_test_tables()) {
-            die("Could not create all the test tables!");
-        }
-
-        if (!$this->prepare_test_history_tables()) {
-            die("Could not create all the test tables!");
-        }
-
         foreach ($this->grade_tables as $table) {
             $function = "load_$table";
             $this->$function();
         }
     }
 
-    function prepare_test_tables() {
-        global $CFG, $DB;
-        $result = true;
-
-        /// Define table course_modules to be created
-        $table = new xmldb_table('course_modules');
-
-        if (!$this->dbmanager->table_exists($table)) {
-            /// Adding fields to table course_modules
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('course', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('module', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('instance', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('section', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('idnumber', XMLDB_TYPE_CHAR, '100', null, null, null, null, null, null);
-            $table->add_field('added', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('score', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('indent', XMLDB_TYPE_INTEGER, '5', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('visible', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null, null, '1');
-            $table->add_field('visibleold', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null, null, '1');
-            $table->add_field('groupmode', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('groupingid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('groupmembersonly', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-
-            /// Adding keys to table course_modules
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('groupingid', XMLDB_KEY_FOREIGN, array('groupingid'), 'groupings', array('id'));
-
-            /// Adding indexes to table course_modules
-            $table->add_index('visible', XMLDB_INDEX_NOTUNIQUE, array('visible'));
-            $table->add_index('course', XMLDB_INDEX_NOTUNIQUE, array('course'));
-            $table->add_index('module', XMLDB_INDEX_NOTUNIQUE, array('module'));
-            $table->add_index('instance', XMLDB_INDEX_NOTUNIQUE, array('instance'));
-            $table->add_index('idnumber-course', XMLDB_INDEX_NOTUNIQUE, array('idnumber', 'course'));
-
-            /// Launch create table for course_modules
-            $this->dbmanager->create_table($table);
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-        /// Define table modules to be created
-        $table = new xmldb_table('modules');
-
-        if (!$this->dbmanager->table_exists($table)) {
-
-            /// Adding fields to table modules
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('name', XMLDB_TYPE_CHAR, '20', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('version', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('cron', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('lastcron', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('search', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('visible', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, null, null, '1');
-
-            /// Adding keys to table modules
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-
-            /// Adding indexes to table modules
-            $table->add_index('name', XMLDB_INDEX_NOTUNIQUE, array('name'));
-
-            /// Launch create table for modules
-            $this->dbmanager->create_table($table);
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-        /// Define table grade_items to be created
-        $table = new xmldb_table('grade_items');
-
-        if (!$this->dbmanager->table_exists($table)) {
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('categoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('itemname', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('itemtype', XMLDB_TYPE_CHAR, '30', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('itemmodule', XMLDB_TYPE_CHAR, '30', null, null, null, null, null, null);
-            $table->add_field('iteminstance', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('itemnumber', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('iteminfo', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('idnumber', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('calculation', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('gradetype', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '1');
-            $table->add_field('grademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100');
-            $table->add_field('grademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('outcomeid', XMLDB_TYPE_INTEGER, '10', null, null, null, null, null, null);
-            $table->add_field('gradepass', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('multfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '1.0');
-            $table->add_field('plusfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('sortorder', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('display', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('decimals', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('hidden', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locked', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locktime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('deleted', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('needsupdate', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id'));
-            $table->add_key('categoryid', XMLDB_KEY_FOREIGN, array('categoryid'), 'grade_categories', array('id'));
-            $table->add_key('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id'));
-            $table->add_key('outcomeid', XMLDB_KEY_FOREIGN, array('outcomeid'), 'grade_outcomes', array('id'));
-
-            /// Launch create table for grade_items
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-
-        /// Define table grade_categories to be created
-        $table = new xmldb_table('grade_categories');
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('parent', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('depth', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('path', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('fullname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('aggregation', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('keephigh', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('droplow', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('aggregateonlygraded', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('aggregateoutcomes', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('aggregatesubcats', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id'));
-            $table->add_key('parent', XMLDB_KEY_FOREIGN, array('parent'), 'grade_categories', array('id'));
-
-            /// Launch create table for grade_categories
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-
-        /// Define table grade_grades to be created
-        $table = new xmldb_table('grade_grades');
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('itemid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('rawgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null);
-            $table->add_field('rawgrademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100');
-            $table->add_field('rawgrademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('rawscaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('usermodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('finalgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null);
-            $table->add_field('hidden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locked', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locktime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('exported', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('overridden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('excluded', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('feedback', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('feedbackformat', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('information', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('informationformat', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('itemid', XMLDB_KEY_FOREIGN, array('itemid'), 'grade_items', array('id'));
-            $table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
-            $table->add_key('rawscaleid', XMLDB_KEY_FOREIGN, array('rawscaleid'), 'scale', array('id'));
-            $table->add_key('usermodified', XMLDB_KEY_FOREIGN, array('usermodified'), 'user', array('id'));
-
-            /// Launch create table for grade_grades
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-
-        /// Define table grade_outcomes to be created
-        $table = new xmldb_table('grade_outcomes');
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-            /// Adding fields to table grade_outcomes
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('shortname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('fullname', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('usermodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-
-            /// Adding keys to table grade_outcomes
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id'));
-            $table->add_key('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id'));
-            $table->add_key('usermodified', XMLDB_KEY_FOREIGN, array('usermodified'), 'user', array('id'));
-
-            /// Launch create table for grade_outcomes
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-
-        /// Define table scale to be created
-        $table = new xmldb_table('scale');
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('scale', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('description', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_index('courseid', XMLDB_INDEX_NOTUNIQUE, array('courseid'));
-
-            /// Launch create table for scale
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-        /// Define table quiz to be created
-        $table = new xmldb_table('quiz');
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-            /// Adding fields to table quiz
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('course', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('intro', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('timeopen', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('timeclose', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('optionflags', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('penaltyscheme', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('attempts', XMLDB_TYPE_INTEGER, '6', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('attemptonlast', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('grademethod', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '1');
-            $table->add_field('decimalpoints', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '2');
-            $table->add_field('review', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('questionsperpage', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('shufflequestions', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('shuffleanswers', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('questions', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('sumgrades', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('grade', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('timelimit', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('password', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('subnet', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('popup', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('delay1', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('delay2', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-
-            /// Adding keys to table quiz
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-
-            /// Adding indexes to table quiz
-            $table->add_index('course', XMLDB_INDEX_NOTUNIQUE, array('course'));
-
-            /// Launch create table for quiz
-            $this->dbmanager->create_table($table);
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-        return $result;
-    }
-
-
-    function prepare_test_history_tables() {
-        global $DB;
-        $result = true;
-
-        /// Define table grade_items to be created
-        $table = new xmldb_table('grade_items_history');
-
-        if (!$this->dbmanager->table_exists($table)) {
-
-        /// Adding fields to table grade_items_history
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('action', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('oldid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('categoryid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('itemname', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('itemtype', XMLDB_TYPE_CHAR, '30', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('itemmodule', XMLDB_TYPE_CHAR, '30', null, null, null, null, null, null);
-            $table->add_field('iteminstance', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('itemnumber', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('iteminfo', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('idnumber', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('calculation', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('gradetype', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, null, null, '1');
-            $table->add_field('grademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100');
-            $table->add_field('grademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('outcomeid', XMLDB_TYPE_INTEGER, '10', null, null, null, null, null, null);
-            $table->add_field('gradepass', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('multfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '1.0');
-            $table->add_field('plusfactor', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('sortorder', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('display', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('decimals', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('hidden', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locked', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locktime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('needsupdate', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-
-        /// Adding keys to table grade_items_history
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'grade_items', array('id'));
-            $table->add_key('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id'));
-            $table->add_key('categoryid', XMLDB_KEY_FOREIGN, array('categoryid'), 'grade_categories', array('id'));
-            $table->add_key('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id'));
-            $table->add_key('outcomeid', XMLDB_KEY_FOREIGN, array('outcomeid'), 'grade_outcomes', array('id'));
-
-        /// Adding indexes to table grade_items_history
-            $table->add_index('action', XMLDB_INDEX_NOTUNIQUE, array('action'));
-
-        /// Launch create table for grade_items_history
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-        /// Define table grade_categories to be created
-        $table = new xmldb_table('grade_categories_history');
-
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-        /// Adding fields to table grade_categories_history
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('action', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('oldid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('parent', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('depth', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('path', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('fullname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('aggregation', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('keephigh', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('droplow', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('aggregateonlygraded', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('aggregateoutcomes', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('aggregatesubcats', XMLDB_TYPE_INTEGER, '1', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-
-        /// Adding keys to table grade_categories_history
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'grade_categories', array('id'));
-            $table->add_key('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id'));
-            $table->add_key('parent', XMLDB_KEY_FOREIGN, array('parent'), 'grade_categories', array('id'));
-
-        /// Adding indexes to table grade_categories_history
-            $table->add_index('action', XMLDB_INDEX_NOTUNIQUE, array('action'));
-
-        /// Launch create table for grade_categories_history
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-
-        /// Define table grade_grades to be created
-        $table = new xmldb_table('grade_grades_history');
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-        /// Adding fields to table grade_grades_history
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('action', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('oldid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('itemid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('rawgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null);
-            $table->add_field('rawgrademax', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '100');
-            $table->add_field('rawgrademin', XMLDB_TYPE_NUMBER, '10, 5', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('rawscaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('usermodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('finalgrade', XMLDB_TYPE_NUMBER, '10, 5', null, null, null, null, null, null);
-            $table->add_field('hidden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locked', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('locktime', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('exported', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('overridden', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('excluded', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('feedback', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('feedbackformat', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('information', XMLDB_TYPE_TEXT, 'medium', null, null, null, null, null, null);
-            $table->add_field('informationformat', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-
-        /// Adding keys to table grade_grades_history
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'grade_grades', array('id'));
-            $table->add_key('itemid', XMLDB_KEY_FOREIGN, array('itemid'), 'grade_items', array('id'));
-            $table->add_key('userid', XMLDB_KEY_FOREIGN, array('userid'), 'user', array('id'));
-            $table->add_key('rawscaleid', XMLDB_KEY_FOREIGN, array('rawscaleid'), 'scale', array('id'));
-            $table->add_key('usermodified', XMLDB_KEY_FOREIGN, array('usermodified'), 'user', array('id'));
-            $table->add_key('loggeduser', XMLDB_KEY_FOREIGN, array('loggeduser'), 'user', array('id'));
-
-        /// Adding indexes to table grade_grades_history
-            $table->add_index('action', XMLDB_INDEX_NOTUNIQUE, array('action'));
-
-        /// Launch create table for grade_grades_history
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-
-        /// Define table grade_outcomes to be created
-        $table = new xmldb_table('grade_outcomes_history');
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-        /// Adding fields to table grade_outcomes_history
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('action', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('oldid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('shortname', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('fullname', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('scaleid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-
-        /// Adding keys to table grade_outcomes_history
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'grade_outcomes', array('id'));
-            $table->add_key('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id'));
-            $table->add_key('scaleid', XMLDB_KEY_FOREIGN, array('scaleid'), 'scale', array('id'));
-            $table->add_key('loggeduser', XMLDB_KEY_FOREIGN, array('loggeduser'), 'user', array('id'));
-
-        /// Adding indexes to table grade_outcomes_history
-            $table->add_index('action', XMLDB_INDEX_NOTUNIQUE, array('action'));
-
-        /// Launch create table for grade_outcomes_history
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-        /// Define table scale to be created
-        $table = new xmldb_table('scale_history');
-
-
-        if ($result && !$this->dbmanager->table_exists($table)) {
-
-        /// Adding fields to table scale_history
-            $table->add_field('id', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null, null);
-            $table->add_field('action', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('oldid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('source', XMLDB_TYPE_CHAR, '255', null, null, null, null, null, null);
-            $table->add_field('timemodified', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('loggeduser', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, null, null, null, null, null);
-            $table->add_field('courseid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('userid', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, null, null, '0');
-            $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('scale', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-            $table->add_field('description', XMLDB_TYPE_TEXT, 'small', null, XMLDB_NOTNULL, null, null, null, null);
-
-        /// Adding keys to table scale_history
-            $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id'));
-            $table->add_key('oldid', XMLDB_KEY_FOREIGN, array('oldid'), 'scales', array('id'));
-            $table->add_key('courseid', XMLDB_KEY_FOREIGN, array('courseid'), 'course', array('id'));
-
-        /// Adding indexes to table scale_history
-            $table->add_index('action', XMLDB_INDEX_NOTUNIQUE, array('action'));
-
-        /// Launch create table for scale_history
-            $this->dbmanager->create_table($table);
-
-        } else {
-            $DB->delete_records($table->name, null);
-        }
-
-        return $result;
-    }
-
     /**
      * Drop test tables from DB.
      */
index 1db52cff4900fa843ca7fa8930dad1eead7f1cf7..efb3734511aa1f98b6c36d36829995375d591a19 100644 (file)
@@ -153,6 +153,7 @@ class MoodleUnitTestCase extends UnitTestCase {
     public $tables = array();
     public $pkfile;
     public $cfg;
+    public $DB;
 
     /**
      * In the constructor, record the max(id) of each test table into a csv file.
@@ -163,12 +164,12 @@ class MoodleUnitTestCase extends UnitTestCase {
      */
     public function __construct($label = false) {
         parent::UnitTestCase($label);
-
         // MDL-16483 Get PKs and save data to text file
         global $DB, $CFG;
         $this->pkfile = $CFG->dataroot.'/testtablespks.csv';
         $this->cfg = $CFG;
-        $this->setup();
+
+        UnitTestDB::instantiate();
 
         $tables = $DB->get_tables();
 
@@ -244,6 +245,8 @@ class MoodleUnitTestCase extends UnitTestCase {
     public function setUp() {
         parent::setUp();
         UnitTestDB::instantiate();
+        global $DB;
+        $this->DB =& $DB;
     }
 
     /**
@@ -251,6 +254,9 @@ class MoodleUnitTestCase extends UnitTestCase {
      */
     public function tearDown() {
         global $DB;
+        if (empty($DB)) {
+            $DB = $this->DB;
+        }
         $DB->cleanup();
         parent::tearDown();
     }
@@ -282,10 +288,6 @@ class UnitTestDB {
 
     public $table_data = array();
 
-    public function __construct() {
-
-    }
-
     /**
      * Call this statically to connect to the DB using the unittest prefix, instantiate
      * the unit test db, store it as a member variable, instantiate $this and use it as the new global $DB.
@@ -298,8 +300,11 @@ class UnitTestDB {
             print_error("prefixnotset", 'simpletest');
         }
 
-        UnitTestDB::$DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
-        UnitTestDB::$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->dbpersist, $CFG->unittestprefix);
+        if (empty(UnitTestDB::$DB)) {
+            UnitTestDB::$DB = moodle_database::get_driver_instance($CFG->dbtype, $CFG->dblibrary);
+            UnitTestDB::$DB->connect($CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->dbpersist, $CFG->unittestprefix);
+        }
+
         $manager = UnitTestDB::$DB->get_manager();
 
         if (!$manager->table_exists('user')) {
@@ -352,12 +357,12 @@ class UnitTestDB {
     public function update_record($table, $dataobject, $bulk=false) {
         global $DB;
         if (empty($this->table_data[$table]) || !in_array($dataobject->id, $this->table_data[$table])) {
-            return UnitTestDB::$DB->update_record($table, $dataobject, $bulk);
-            // $a = new stdClass();
-            // $a->id = $dataobject->id;
-            // $a->table = $table;
-            // debug_print_backtrace();
-            // throw new moodle_exception('updatingnoninsertedrecord', 'simpletest', '', $a);
+            // return UnitTestDB::$DB->update_record($table, $dataobject, $bulk);
+            $a = new stdClass();
+            $a->id = $dataobject->id;
+            $a->table = $table;
+            debug_print_backtrace();
+            throw new moodle_exception('updatingnoninsertedrecord', 'simpletest', '', $a);
         } else {
             return UnitTestDB::$DB->update_record($table, $dataobject, $bulk);
         }
@@ -368,7 +373,7 @@ class UnitTestDB {
      * throw an exception and cancel delete.
      * @throws moodle_exception If trying to delete a record not inserted by unit tests.
      */
-    public function delete_records($table, array $conditions=null) {
+    public function delete_records($table, array $conditions=array()) {
         global $DB;
         $a = new stdClass();
         $a->table = $table;
@@ -385,7 +390,7 @@ class UnitTestDB {
         }
 
         foreach ($ids_to_delete as $id) {
-            if (!in_array($id, $this->table_data[$table])) {
+            if (empty($this->table_data[$table]) || !in_array($id, $this->table_data[$table])) {
                 $proceed_with_delete = false;
                 $a->id = $id;
                 break;
index 623354ba2b61d3f97d087c8dc0decc1f15a0d9a0..7dca498513d692c62eef834346d38730b9d5e1cf 100644 (file)
@@ -4066,7 +4066,7 @@ function forum_add_attachment($post, $forum, $cm, $mform=null, &$message=null, $
     if (!isset($forum->maxattachments)) {  // TODO - delete this once we add a field to the forum table
         $forum->maxattachments = 3;
     }
-    
+
     for ($i=0; $i<$forum->maxattachments; $i++) {
         $elementname = 'attachment'.$i;
         if (empty($values->$elementname)) {         // Nothing defined
@@ -4089,7 +4089,7 @@ function forum_add_attachment($post, $forum, $cm, $mform=null, &$message=null, $
  */
 function forum_relink_inline_attachments($post, $forum, $cm){
     global $DB;
-    
+
     $context = get_context_instance(CONTEXT_MODULE, $cm->id);
     $authorcontext = get_context_instance(CONTEXT_USER, $post->userid);
 
@@ -4120,7 +4120,7 @@ function forum_add_new_post($post, $mform, &$message) {
         return false;
     }
 
-    forum_relink_inline_attachments($post, $forum, $cm);   
+    forum_relink_inline_attachments($post, $forum, $cm);
     forum_add_attachment($post, $forum, $cm, $mform, $message, false);
 
     // Update discussion modified date
@@ -4226,8 +4226,10 @@ function forum_add_discussion($discussion, $mform=null, &$message=null) {
         return 0;
     }
 
-    forum_relink_inline_attachments($post, $forum, $cm);
-    forum_add_attachment($post, $forum, $cm, $mform, $message, false);
+    if (!empty($cm->id)) {
+        forum_relink_inline_attachments($post, $forum, $cm);
+        forum_add_attachment($post, $forum, $cm, $mform, $message, false);
+    }
 
     if (forum_tp_can_track_forums($forum) && forum_tp_is_tracked($forum)) {
         forum_tp_mark_post_read($post->userid, $post, $post->forum);
@@ -4570,7 +4572,7 @@ function forum_get_tracking_link($forum, $messages=array(), $fakelink=true) {
     } else {
         $linktitle = $strtrackforum;
         $linktext = $strtrackforum;
-    } 
+    }
 
     $link = '';
     if ($fakelink) {