@@ -207,6 +207,60 @@ public function test_export_user_data() {
207207 // Confirm student's data is exported.
208208 $ writer = \core_privacy \local \request \writer::with_context ($ studentcontext );
209209 $ this ->assertTrue ($ writer ->has_any_data ());
210+
211+ delete_course ($ course , false );
212+ $ sc = context_user::instance ($ student ->id );
213+ $ approvedlist = new approved_contextlist ($ student , $ component , [$ sc ->id ]);
214+ provider::export_user_data ($ approvedlist );
215+ $ writer = \core_privacy \local \request \writer::with_context ($ sc );
216+ $ this ->assertTrue ($ writer ->has_any_data ());
217+ }
218+
219+ /**
220+ * Test exporting data for an approved contextlist with a deleted course
221+ */
222+ public function test_export_user_data_with_deleted_course () {
223+ global $ DB ;
224+
225+ $ this ->resetAfterTest ();
226+ $ generator = $ this ->getDataGenerator ();
227+ $ component = 'block_recentlyaccesseditems ' ;
228+
229+ $ student = $ generator ->create_user ();
230+ $ studentcontext = context_user::instance ($ student ->id );
231+
232+ // Enrol user in course and add course items.
233+ $ course = $ generator ->create_course ();
234+ $ generator ->enrol_user ($ student ->id , $ course ->id , 'student ' );
235+ $ forum = $ generator ->create_module ('forum ' , ['course ' => $ course ]);
236+ $ chat = $ generator ->create_module ('chat ' , ['course ' => $ course ]);
237+
238+ // Generate some recent activity.
239+ $ this ->setUser ($ student );
240+ $ event = \mod_forum \event \course_module_viewed::create (['context ' => context_module::instance ($ forum ->cmid ),
241+ 'objectid ' => $ forum ->id ]);
242+ $ event ->trigger ();
243+ $ event = \mod_chat \event \course_module_viewed::create (['context ' => context_module::instance ($ chat ->cmid ),
244+ 'objectid ' => $ chat ->id ]);
245+ $ event ->trigger ();
246+
247+ // Confirm data is present.
248+ $ params = [
249+ 'courseid ' => $ course ->id ,
250+ 'userid ' => $ student ->id ,
251+ ];
252+
253+ $ result = $ DB ->count_records ('block_recentlyaccesseditems ' , $ params );
254+ $ this ->assertEquals (2 , $ result );
255+ delete_course ($ course , false );
256+
257+ // Export data for student.
258+ $ approvedlist = new approved_contextlist ($ student , $ component , [$ studentcontext ->id ]);
259+ provider::export_user_data ($ approvedlist );
260+
261+ // Confirm student's data is exported.
262+ $ writer = \core_privacy \local \request \writer::with_context ($ studentcontext );
263+ $ this ->assertFalse ($ writer ->has_any_data ());
210264 }
211265
212266 /**
0 commit comments