. defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->dirroot . '/local/webhooks/classes/local/api.php'); use core\task\manager; use local_webhooks\local\api; use local_webhooks\local\record; use local_webhooks\task\notify; /** * Class local_webhooks_task_testcase. * * @copyright 2019 'Valentin Popov' * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ final class local_webhooks_task_testcase extends advanced_testcase { /** * Testing add a task to the queue. */ public function test_add_task() { $this->resetAfterTest(); manager::queue_adhoc_task(new notify()); $tasks = manager::get_adhoc_tasks('\local_webhooks\task\notify'); self::assertCount(1, $tasks); self::assertInstanceOf('\local_webhooks\task\notify', array_shift($tasks)); } /** * Testing disabled processing service. * * @throws \coding_exception * @throws \dml_exception */ public function test_execute_disabled() { curl::mock_response('{}'); $this->resetAfterTest(); $record = new record(); $record->events = ['\core\event\course_viewed']; $record->header = 'application/json'; $record->name = 'Example name'; $record->point = 'http://example.org/'; $record->status = false; $record->token = '967b2286-0874-4938-b088-efdbcf8a79bc'; $record->id = api::create_service($record); $task = new notify(); $task->set_custom_data(['eventname' => '\core\event\course_viewed']); $task->execute(); self::assertNull($task->debug); } /** * Testing enabled processing service. * * @throws \coding_exception * @throws \dml_exception */ public function test_execute_enabled() { curl::mock_response('{}'); $this->resetAfterTest(); $record = new record(); $record->events = ['\core\event\course_viewed']; $record->header = 'application/json'; $record->name = 'Example name'; $record->point = 'http://example.org/'; $record->status = true; $record->token = '967b2286-0874-4938-b088-efdbcf8a79bc'; $record->id = api::create_service($record); $task = new notify(); $task->set_custom_data(['eventname' => '\core\event\course_viewed']); $task->execute(); self::assertCount(1, $task->debug); self::assertInternalType('array', $task->debug); $element = array_shift($task->debug); self::assertInternalType('array', $element['data']); self::assertInternalType('object', $element['service']); self::assertEquals($record->events[0], $element['data']['eventname']); self::assertEquals($record->id, $element['service']->id); self::assertEquals($record->token, $element['data']['token']); } }