From ed0ce52060690eff5459c037338d26796307ef79 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 11 May 2019 00:17:20 +0400 Subject: Added external function delete service Signed-off-by: Valentin Popov --- externallib.php | 56 +++++++++++++++++++++++++++++++++++++++++++------ tests/api_test.php | 2 +- tests/external_test.php | 50 +++++++++++++++++++++++++++++++++++++------ 3 files changed, 95 insertions(+), 13 deletions(-) diff --git a/externallib.php b/externallib.php index 4db6a74..15ed0e2 100644 --- a/externallib.php +++ b/externallib.php @@ -31,10 +31,52 @@ use local_webhooks\local\record; * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ final class local_webhooks_external extends external_api { + /** + * Delete the existing service. + * + * @param int $serviceid + * + * @return bool + * + * @throws \dml_exception + * @throws \invalid_parameter_exception + * @throws \restricted_context_exception + */ + public static function del_service(int $serviceid): bool { + $parameters = self::validate_parameters(self::del_service_parameters(), [ + 'serviceid' => $serviceid, + ]); + + $context = context_system::instance(); + self::validate_context($context); + + return api::del_service($parameters['serviceid']); + } + + /** + * Returns description of the method parameters. + * + * @return \external_function_parameters + */ + public static function del_service_parameters(): external_function_parameters { + return new external_function_parameters([ + 'serviceid' => new external_value(PARAM_INT, 'The service\'s ID.'), + ], ''); + } + + /** + * Returns description of the method result value. + * + * @return \external_value + */ + public static function del_service_returns(): external_value { + return new external_value(PARAM_BOOL, 'The result operation.'); + } + /** * Get data by service. * - * @param int $serviceid Service's ID. + * @param int $serviceid * * @return \local_webhooks\local\record * @@ -43,7 +85,9 @@ final class local_webhooks_external extends external_api { * @throws \restricted_context_exception */ public static function get_service(int $serviceid): record { - $parameters = self::validate_parameters(self::get_service_parameters(), ['serviceid' => $serviceid]); + $parameters = self::validate_parameters(self::get_service_parameters(), [ + 'serviceid' => $serviceid, + ]); $context = context_system::instance(); self::validate_context($context); @@ -52,7 +96,7 @@ final class local_webhooks_external extends external_api { } /** - * Returns description of method parameters. + * Returns description of the method parameters. * * @return \external_function_parameters */ @@ -63,7 +107,7 @@ final class local_webhooks_external extends external_api { } /** - * Returns description of method parameters. + * Returns description of the method result value. * * @return \external_single_structure */ @@ -115,7 +159,7 @@ final class local_webhooks_external extends external_api { } /** - * Returns description of method parameters. + * Returns description of the method parameters. * * @return \external_function_parameters */ @@ -135,7 +179,7 @@ final class local_webhooks_external extends external_api { } /** - * Returns description of method parameters. + * Returns description of the method result value. * * @return \external_multiple_structure */ diff --git a/tests/api_test.php b/tests/api_test.php index c2a2f80..5bca6ab 100644 --- a/tests/api_test.php +++ b/tests/api_test.php @@ -122,10 +122,10 @@ final class local_webhooks_api_testcase extends advanced_testcase { self::assertCount(0, $DB->get_records(LW_TABLE_EVENTS)); self::assertCount(0, $DB->get_records(LW_TABLE_SERVICES)); - // Testing correct delete record of the record's list. $ids = []; $total = random_int(5, 20); + // Testing correct delete record of the record's list. for ($i = 0; $i < $total; $i++) { $record = self::get_random_record(); $ids[] = api::add_service($record); diff --git a/tests/external_test.php b/tests/external_test.php index ea2b362..517f370 100644 --- a/tests/external_test.php +++ b/tests/external_test.php @@ -65,7 +65,7 @@ final class local_webhooks_external_testcase extends externallib_advanced_testca } /** - * Testing external get record's data. + * Testing the external delete service. * * @throws \ReflectionException * @throws \coding_exception @@ -74,10 +74,50 @@ final class local_webhooks_external_testcase extends externallib_advanced_testca * @throws \invalid_response_exception * @throws \restricted_context_exception */ - public function test_get_service() { + public function test_deleting() { + $this->resetAfterTest(); self::setAdminUser(); + // Testing correct delete record of the database. + $record = self::get_random_record(); + $record->id = api::add_service($record); + + $return = local_webhooks_external::del_service($record->id); + $return = external_api::clean_returnvalue(local_webhooks_external::del_service_returns(), $return); + + self::assertEquals(0, api::get_total_count()); + self::assertInternalType('bool', $return); + + $ids = []; + $total = random_int(5, 20); + + // Testing correct delete record of the record's list. + for ($i = 0; $i < $total; $i++) { + $record = self::get_random_record(); + $ids[] = api::add_service($record); + } + + self::assertEquals(count($ids), api::get_total_count()); + $return = local_webhooks_external::del_service($ids[array_rand($ids, 1)]); + $return = external_api::clean_returnvalue(local_webhooks_external::del_service_returns(), $return); + + self::assertEquals(count($ids) - 1, api::get_total_count()); + self::assertInternalType('bool', $return); + } + + /** + * Testing external get record's data. + * + * @throws \ReflectionException + * @throws \coding_exception + * @throws \dml_exception + * @throws \invalid_parameter_exception + * @throws \invalid_response_exception + * @throws \restricted_context_exception + */ + public function test_get_service() { $this->resetAfterTest(); + self::setAdminUser(); // Creating a new record. $record = self::get_random_record(); @@ -114,9 +154,8 @@ final class local_webhooks_external_testcase extends externallib_advanced_testca * @throws \restricted_context_exception */ public function test_get_services() { - self::setAdminUser(); - $this->resetAfterTest(); + self::setAdminUser(); $records = []; $total = random_int(5, 10); @@ -168,9 +207,8 @@ final class local_webhooks_external_testcase extends externallib_advanced_testca * @throws \restricted_context_exception */ public function test_get_services_with_conditions() { - self::setAdminUser(); - $this->resetAfterTest(); + self::setAdminUser(); $records = []; $total = random_int(5, 10); -- cgit v1.2.3