Unit tests MDL-24981 Fixed portfolio unit test so it at least runs (albeit with 23 exceptions and only 2 passes)
This commit is contained in:
@@ -49,18 +49,33 @@ class portfolio_export_exception extends portfolio_exception {
|
||||
*/
|
||||
public function __construct($exporter, $errorcode, $module=null, $continue=null, $a=null) {
|
||||
global $CFG;
|
||||
// This static variable is necessary because sometimes the code below
|
||||
// which tries to obtain a continue link can cause one of these
|
||||
// exceptions to be thrown. This would create an infinite loop (until
|
||||
// PHP hits its stack limit). Using this static lets us make the
|
||||
// nested constructor finish immediately without attempting to call
|
||||
// methods that might fail.
|
||||
static $inconstructor = false;
|
||||
|
||||
if (!empty($exporter) && $exporter instanceof portfolio_exporter) {
|
||||
if (empty($continue)) {
|
||||
$caller = $exporter->get('caller');
|
||||
if (!empty($caller) && $caller instanceof portfolio_caller_base) {
|
||||
$continue = $exporter->get('caller')->get_return_url();
|
||||
if (!$inconstructor && !empty($exporter) &&
|
||||
$exporter instanceof portfolio_exporter) {
|
||||
$inconstructor = true;
|
||||
try {
|
||||
if (empty($continue)) {
|
||||
$caller = $exporter->get('caller');
|
||||
if (!empty($caller) && $caller instanceof portfolio_caller_base) {
|
||||
$continue = $exporter->get('caller')->get_return_url();
|
||||
}
|
||||
}
|
||||
// this was previously only called if we were in cron,
|
||||
// but I think if there's always an exception, we should clean up
|
||||
// rather than force the user to resolve the export later.
|
||||
$exporter->process_stage_cleanup();
|
||||
} catch(Exception $e) {
|
||||
// Ooops, we had an exception trying to get caller
|
||||
// information. Ignore it.
|
||||
}
|
||||
// this was previously only called if we were in cron,
|
||||
// but I think if there's always an exception, we should clean up
|
||||
// rather than force the user to resolve the export later.
|
||||
$exporter->process_stage_cleanup();
|
||||
$inconstructor = false;
|
||||
}
|
||||
parent::__construct($errorcode, $module, $continue, $a);
|
||||
}
|
||||
|
||||
@@ -192,10 +192,22 @@ foreach ($portfolio_plugins as $plugin) {
|
||||
Mock::generatePartial("portfolio_plugin_$plugin", "partialmock_plugin_$plugin", array('send_package'));
|
||||
}
|
||||
|
||||
class portfoliolib_test extends FakeDBUnitTestCase {
|
||||
class portfoliolib_test extends UnitTestCaseUsingDatabase {
|
||||
private $olduser;
|
||||
|
||||
function setup() {
|
||||
global $USER;
|
||||
parent::setup();
|
||||
|
||||
// It is necessary to store $USER object because some subclasses use generator
|
||||
// stuff which breaks $USER
|
||||
$this->olduser = $USER;
|
||||
}
|
||||
|
||||
function tearDown() {
|
||||
global $USER;
|
||||
$USER = $this->olduser;
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
function test_construct_dupe_instance() {
|
||||
@@ -205,7 +217,7 @@ class portfoliolib_test extends FakeDBUnitTestCase {
|
||||
$plugin2 = portfolio_plugin_base::create_instance('download', 'download2', array());
|
||||
$test1 = new portfolio_plugin_download($plugin1->get('id'));
|
||||
} catch (portfolio_exception $e) {
|
||||
$this->assertEqual('multipledisallowed', $e->errorcode);
|
||||
$this->assertEqual('multipleinstancesdisallowed', $e->errorcode);
|
||||
$gotexception = true;
|
||||
}
|
||||
$this->assertTrue($gotexception);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
require_once("$CFG->libdir/simpletest/portfolio_testclass.php");
|
||||
require_once("$CFG->dirroot/mod/assignment/lib.php");
|
||||
require_once("$CFG->dirroot/$CFG->admin/generator.php");
|
||||
require_once("$CFG->dirroot/mod/assignment/locallib.php");
|
||||
|
||||
Mock::generate('assignment_portfolio_caller', 'mock_caller');
|
||||
Mock::generate('portfolio_exporter', 'mock_exporter');
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
require_once("$CFG->libdir/simpletest/portfolio_testclass.php");
|
||||
require_once("$CFG->dirroot/mod/data/lib.php");
|
||||
require_once("$CFG->dirroot/$CFG->admin/generator.php");
|
||||
require_once("$CFG->dirroot/mod/data/locallib.php");
|
||||
|
||||
Mock::generate('data_portfolio_caller', 'mock_caller');
|
||||
Mock::generate('portfolio_exporter', 'mock_exporter');
|
||||
|
||||
Reference in New Issue
Block a user