From bde135499d1fe0ca67a1f50fea79848cbdb370ea Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 6 May 2019 04:46:09 +0400 Subject: Added a new class for processing events Signed-off-by: Valentin Popov --- tests/task_test.php | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 tests/task_test.php (limited to 'tests/task_test.php') diff --git a/tests/task_test.php b/tests/task_test.php new file mode 100644 index 0000000..dc9d42f --- /dev/null +++ b/tests/task_test.php @@ -0,0 +1,111 @@ +. + +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']); + } +} \ No newline at end of file -- cgit v1.2.3