diff --git a/badges/classes/external/user_badge_exporter.php b/badges/classes/external/user_badge_exporter.php index 58c44613d85..4d8b44241e6 100644 --- a/badges/classes/external/user_badge_exporter.php +++ b/badges/classes/external/user_badge_exporter.php @@ -86,7 +86,7 @@ class user_badge_exporter extends exporter { 'optional' => true, ], 'issuername' => [ - 'type' => PARAM_NOTAGS, + 'type' => PARAM_TEXT, 'description' => 'Issuer name', ], 'issuerurl' => [ diff --git a/badges/tests/external_test.php b/badges/tests/external_test.php index 0c65fb9e92e..4f4cff097ac 100644 --- a/badges/tests/external_test.php +++ b/badges/tests/external_test.php @@ -42,6 +42,15 @@ require_once($CFG->libdir . '/badgeslib.php'); */ class core_badges_external_testcase extends externallib_advanced_testcase { + /** @var stdClass $course */ + private $course; + + /** @var stdClass $student */ + private $student; + + /** @var stdClass $teacher */ + private $teacher; + /** * Set up for every test */ @@ -53,15 +62,9 @@ class core_badges_external_testcase extends externallib_advanced_testcase { // Setup test data. $this->course = $this->getDataGenerator()->create_course(); - // Create users. - $this->student = self::getDataGenerator()->create_user(); - $this->teacher = self::getDataGenerator()->create_user(); - - // Users enrolments. - $this->studentrole = $DB->get_record('role', array('shortname' => 'student')); - $this->teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher')); - $this->getDataGenerator()->enrol_user($this->student->id, $this->course->id, $this->studentrole->id, 'manual'); - $this->getDataGenerator()->enrol_user($this->teacher->id, $this->course->id, $this->teacherrole->id, 'manual'); + // Create users and enrolments. + $this->student = $this->getDataGenerator()->create_and_enrol($this->course, 'student'); + $this->teacher = $this->getDataGenerator()->create_and_enrol($this->course, 'editingteacher'); // Mock up a site badge. $now = time(); @@ -139,7 +142,7 @@ class core_badges_external_testcase extends externallib_advanced_testcase { $badge->issue($this->student->id, true); // Hack the database to adjust the time each badge was issued. - $DB->set_field('badge_issued', 'dateissued', $now - 11, array('userid' => $this->student->id, 'badgeid' => $coursebadgeid)); + $DB->set_field('badge_issued', 'dateissued', $now - 10, array('userid' => $this->student->id, 'badgeid' => $coursebadgeid)); // Make the site badge a related badge. $badge->add_related_badges(array($badgeid)); @@ -246,4 +249,28 @@ class core_badges_external_testcase extends externallib_advanced_testcase { } } } + + /** + * Test get_user_badges where issuername contains text to be filtered + */ + public function test_get_user_badges_filter_issuername(): void { + global $DB; + + filter_set_global_state('multilang', TEXTFILTER_ON); + filter_set_applies_to_strings('multilang', true); + + external_settings::get_instance()->set_filter(true); + + // Update issuer name of test badge. + $issuername = 'Issuer (en)Issuer (es)'; + $DB->set_field('badge', 'issuername', $issuername, ['name' => 'Test badge site']); + + // Retrieve student badges. + $result = core_badges_external::get_user_badges($this->student->id); + $result = external_api::clean_returnvalue(core_badges_external::get_user_badges_returns(), $result); + + // Site badge will be last, because it has the earlier issued date. + $badge = end($result['badges']); + $this->assertEquals('Issuer (en)', $badge['issuername']); + } }