From 2de389aa058b66ce5376d2909b33836ddeb9a47f Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Tue, 27 Mar 2018 07:54:21 +0800 Subject: [PATCH] MDL-61309 core_tags: Add privacy unit test trait --- tag/classes/tests/privacy_helper.php | 81 ++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 tag/classes/tests/privacy_helper.php diff --git a/tag/classes/tests/privacy_helper.php b/tag/classes/tests/privacy_helper.php new file mode 100644 index 00000000000..cba779bd291 --- /dev/null +++ b/tag/classes/tests/privacy_helper.php @@ -0,0 +1,81 @@ +. + +/** + * Helpers for the core_tag subsystem implementation of privacy. + * + * @package core_tag + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace core_tag\tests; + +defined('MOODLE_INTERNAL') || die(); + +use \core_privacy\tests\request\content_writer; + +global $CFG; + +/** + * Helpers for the core_tag subsystem implementation of privacy. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +trait privacy_helper { + /** + * Fetch all tags on a subcontext. + * + * @param \context $context The context being stored. + * @param array $subcontext The subcontext path to check. + * @return array + */ + protected function get_tags_on_subcontext(\context $context, array $subcontext) { + $writer = \core_privacy\local\request\writer::with_context($context); + return $writer->get_related_data($subcontext, 'tags'); + } + + /** + * Check that all tags match on the specified context. + * + * @param int $userid The ID of the user being stored. + * @param \context $context The context being stored. + * @param array $subcontext The subcontext path to check. + * @param string $component The component being stored. + * @param string $itemtype The tag area to store results for. + * @param int $itemid The itemid to store. + */ + protected function assert_all_tags_match_on_context( + int $userid, + \context $context, + array $subcontext, + $component, + $itemtype, + $itemid + ) { + $writer = \core_privacy\local\request\writer::with_context($context); + + $dbtags = \core_tag_tag::get_item_tags($component, $itemtype, $itemid); + $exportedtags = $this->get_tags_on_subcontext($context, $subcontext); + + $this->assertCount(count($dbtags), $exportedtags); + + foreach ($dbtags as $tag) { + $this->assertContains($tag->rawname, $exportedtags); + } + } +}