MDL-48621 events: Adapting unit tests to debugging messages
- A new assertDebuggingCalledCount has been introduced, as multiple debugging messages may be called in some cases, for example when calling events_cron with queued events that need to be dispatched. - events_update_definition has been moved out of setUp as debugging messages are only caught by our phpunit custom stuff when they are called inside tests.
This commit is contained in:
@@ -307,6 +307,44 @@ abstract class advanced_testcase extends base_testcase {
|
||||
$this->resetDebugging();
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts how many times debugging has been called.
|
||||
*
|
||||
* @param int $expectedcount The expected number of times
|
||||
* @param array $debugmessages Expected debugging messages, one for each expected message.
|
||||
* @param array $debuglevels Expected debugging levels, one for each expected message.
|
||||
* @param string $message
|
||||
* @return void
|
||||
*/
|
||||
public function assertDebuggingCalledCount($expectedcount, $debugmessages = array(), $debuglevels = array(), $message = '') {
|
||||
if (!is_int($expectedcount)) {
|
||||
throw new coding_exception('assertDebuggingCalledCount $expectedcount argument should be an integer.');
|
||||
}
|
||||
|
||||
$debugging = $this->getDebuggingMessages();
|
||||
$this->assertEquals($expectedcount, count($debugging), $message);
|
||||
|
||||
if ($debugmessages) {
|
||||
if (!is_array($debugmessages) || count($debugmessages) != $expectedcount) {
|
||||
throw new coding_exception('assertDebuggingCalledCount $debugmessages should contain ' . $expectedcount . ' messages');
|
||||
}
|
||||
foreach ($debugmessages as $key => $debugmessage) {
|
||||
$this->assertSame($debugmessage, $debugging[$key]->message, $message);
|
||||
}
|
||||
}
|
||||
|
||||
if ($debuglevels) {
|
||||
if (!is_array($debuglevels) || count($debuglevels) != $expectedcount) {
|
||||
throw new coding_exception('assertDebuggingCalledCount $debuglevels should contain ' . $expectedcount . ' messages');
|
||||
}
|
||||
foreach ($debuglevels as $key => $debuglevel) {
|
||||
$this->assertSame($debuglevel, $debugging[$key]->level, $message);
|
||||
}
|
||||
}
|
||||
|
||||
$this->resetDebugging();
|
||||
}
|
||||
|
||||
/**
|
||||
* Call when no debugging() messages expected.
|
||||
* @param string $message
|
||||
|
||||
Reference in New Issue
Block a user