From 1c9732c1845a5d20432728a81bb6d3749dc4e674 Mon Sep 17 00:00:00 2001
From: Anisa <kusumadewi@itc.rwth-aachen.de>
Date: Tue, 23 May 2023 11:32:47 +0200
Subject: [PATCH] finish the provider test

---
 tests/privacy/provider_test.php | 57 ++++++++++++++++++++++++++++++++-
 1 file changed, 56 insertions(+), 1 deletion(-)

diff --git a/tests/privacy/provider_test.php b/tests/privacy/provider_test.php
index d5f6094..276431c 100644
--- a/tests/privacy/provider_test.php
+++ b/tests/privacy/provider_test.php
@@ -127,6 +127,13 @@ class provider_test extends provider_testcase {
 
         $this->resetAfterTest();
 
+        $component = 'mod_pdfannotator';
+
+        $usercontext1 = \context_user::instance($this->user->id);
+        $userlist1 = new \core_privacy\local\request\userlist($usercontext1, $component);
+        provider::get_users_in_context($userlist1);
+        $this->assertCount(1, $userlist1);
+
         // Create a comment for the question above.
         $answer = new stdClass();
         $answer->pdfannotatorid = $this->pdffile->id;
@@ -171,6 +178,54 @@ class provider_test extends provider_testcase {
         // Delete using delete_data_for_user.
         provider::delete_data_for_users($userlist);
 
-        
+        list($userinsql, $userinparams) = $DB->get_in_or_equal($userlist->get_userids(), SQL_PARAMS_NAMED);
+
+        $annotatorid =  $this->pdffile->id;
+
+        // Combine instance + user sql.
+        $params = array_merge(['pdfannotatorid' => $annotatorid], $userinparams);
+        $sql = "pdfannotatorid = :pdfannotatorid AND userid {$userinsql}";
+
+        // Count subscriptions.
+        $annotations = $DB->get_records('pdfannotator_annotations', ['pdfannotatorid' => $annotatorid]);
+        $annotationids = array_column($annotations, 'id');
+        list($subinsql, $subinparams) = $DB->get_in_or_equal($annotationids, SQL_PARAMS_NAMED);
+
+        $count_subs = $DB->count_records_sql("SELECT *
+                            FROM {pdfannotator_subscriptions} sub
+                            WHERE sub.userid {$userinsql}
+                            AND sub.annotationid {$subinsql}",
+                            array_merge($userinparams, $subinparams));
+        $this->assertCount(0,  $count_subs);
+
+        // Count votes.
+        $comments = $DB->get_records('pdfannotator_comments', ['pdfannotatorid' => $annotatorid]);
+        $commentsids = array_column($comments, 'id');
+        list($commentinsql, $commentinparams) = $DB->get_in_or_equal($commentsids, SQL_PARAMS_NAMED);
+
+        $count_votes = $DB->count_records_sql("SELECT *
+                        FORM {pdfannotator_votes} votes
+                        WHERE vote.userid {$userinsql}
+                        AND vote.commentid {$commentinsql}",
+                        array_merge($userinparams, $commentinparams));
+        $this->assertCount(0,  $count_votes);
+
+        // Count annotations, reports, and comments.
+        $count_annotations = count($DB->get_records_select('pdfannotator_annotations', $sql, $params));
+        $this->assertCount(0,  $count_annotations); 
+        $count_reports = count($DB->get_records_select('pdfannotator_reports', $sql, $params));
+        $this->assertCount(0,  $count_reports);
+        $count_comments = count($DB->get_records_select('pdfannotator_comments', $sql, $params));
+        $this->assertCount(0,  $count_comments);
+
+        // Count pictures in comments.
+        $count_pics = $DB->count_records_sql("SELECT *
+                        FORM {files} imgs
+                        WHERE imgs.component = 'mod_pdfannotator'
+                        AND imgs.filearea = 'post'
+                        AND imgs.userid {$userinsql}
+                        AND imgs.itemid {$commentinsql}",
+                        array_merge($userinparams, $commentinparams));
+        $this->assertCount(0,  $count_pics);       
     }
 }
\ No newline at end of file
-- 
GitLab