]> git.mjollnir.org Git - moodle.git/commit
unit tests: MDL-18607 new way to do unit tests involving the database.
authortjhunt <tjhunt>
Mon, 23 Mar 2009 04:12:37 +0000 (04:12 +0000)
committertjhunt <tjhunt>
Mon, 23 Mar 2009 04:12:37 +0000 (04:12 +0000)
commitf68cb08bbe362baa8f8c7ec08a4402669f848c96
tree57025871c3d06343dd2f3fc5839f2e36e270046c
parent67d5e9df3918b10806074c27600d259b02f71a3c
unit tests: MDL-18607 new way to do unit tests involving the database.

This is not as ambitious as the abortive FakeDBUnitTests scheme, but this one works for simple cases.

There is a new test case class UnitTestCaseUsingDatabase to inherit from. I hope it is sufficiently well documented in its PHPdocs.
* It users $CFG->unittestprefix.
* You can access that database using $this->testdb.
* That database is empty by default, you have to call create_test_table to create the ones you want, and drop_test_table to clean them up in the end. The table definitions are read from the XMLDB file.
* When you are ready to call real Moodle code that users $DB, call switch_to_test_db and then revert_to_real_db when you are done.
* If you forget to call drop_test_table or switch_to_test_db, the class will attempt to clean up after you, but will also print rude developer debug messages telling you not to be stupid.
* There is also a load_test_data method for populating a table from an array.

The is an example of its use in lib/simpletest/testunittestusingdb.php.
admin/report/unittest/index.php
lib/simpletest/testunittestusingdb.php [new file with mode: 0644]
lib/simpletestlib.php
lib/simpletestlib/test_case.php