Línea 40... |
Línea 40... |
40 |
*
|
40 |
*
|
41 |
* @package core_question
|
41 |
* @package core_question
|
42 |
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
|
42 |
* @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
|
43 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
43 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
44 |
*/
|
44 |
*/
|
45 |
class provider_test extends \core_privacy\tests\provider_testcase {
|
45 |
final class provider_test extends \core_privacy\tests\provider_testcase {
|
Línea 46... |
Línea 46... |
46 |
|
46 |
|
47 |
// Include the privacy helper which has assertions on it.
|
47 |
// Include the privacy helper which has assertions on it.
|
Línea 48... |
Línea 48... |
48 |
use \core_question_privacy_helper;
|
48 |
use \core_question_privacy_helper;
|
Línea 195... |
Línea 195... |
195 |
$otheruser = $this->getDataGenerator()->create_user();
|
195 |
$otheruser = $this->getDataGenerator()->create_user();
|
Línea 196... |
Línea 196... |
196 |
|
196 |
|
197 |
// Create one question as each user in diferent contexts.
|
197 |
// Create one question as each user in diferent contexts.
|
198 |
$this->setUser($user);
|
198 |
$this->setUser($user);
|
199 |
$userdata = $questiongenerator->setup_course_and_questions();
|
199 |
$userdata = $questiongenerator->setup_course_and_questions();
|
Línea 200... |
Línea 200... |
200 |
$expectedcontext = \context_course::instance($userdata[1]->id);
|
200 |
$expectedcontext = \context_module::instance($userdata[4]->cmid);
|
201 |
|
201 |
|
202 |
$this->setUser($otheruser);
|
202 |
$this->setUser($otheruser);
|
Línea 203... |
Línea 203... |
203 |
$otheruserdata = $questiongenerator->setup_course_and_questions();
|
203 |
$otheruserdata = $questiongenerator->setup_course_and_questions();
|
204 |
$unexpectedcontext = \context_course::instance($otheruserdata[1]->id);
|
204 |
$unexpectedcontext = \context_module::instance($otheruserdata[4]->cmid);
|
205 |
|
205 |
|
206 |
// And create another one where we'll update a question as the test user.
|
206 |
// And create another one where we'll update a question as the test user.
|
Línea 207... |
Línea 207... |
207 |
$moreotheruserdata = $questiongenerator->setup_course_and_questions();
|
207 |
$moreotheruserdata = $questiongenerator->setup_course_and_questions();
|
208 |
$otherexpectedcontext = \context_course::instance($moreotheruserdata[1]->id);
|
208 |
$otherexpectedcontext = \context_module::instance($moreotheruserdata[4]->cmid);
|
Línea 224... |
Línea 224... |
224 |
|
224 |
|
225 |
$expectedcontexts = [
|
225 |
$expectedcontexts = [
|
226 |
$expectedcontext->id,
|
226 |
$expectedcontext->id,
|
227 |
$otherexpectedcontext->id,
|
227 |
$otherexpectedcontext->id,
|
- |
|
228 |
];
|
- |
|
229 |
$this->assertEqualsCanonicalizing(
|
228 |
];
|
230 |
$expectedcontexts,
|
- |
|
231 |
array_values($contextlist->get_contextids()),
|
- |
|
232 |
'Contexts not equal',
|
Línea 229... |
Línea 233... |
229 |
$this->assertEqualsCanonicalizing($expectedcontexts, $contextlist->get_contextids(), 'Contexts not equal');
|
233 |
);
|
230 |
|
234 |
|
Línea 231... |
Línea 235... |
231 |
// Run the export_user_Data as the test user.
|
235 |
// Run the export_user_Data as the test user.
|
Línea 287... |
Línea 291... |
287 |
|
291 |
|
288 |
$user = \core_user::get_user_by_username('admin');
|
292 |
$user = \core_user::get_user_by_username('admin');
|
Línea 289... |
Línea 293... |
289 |
$otheruser = $this->getDataGenerator()->create_user();
|
293 |
$otheruser = $this->getDataGenerator()->create_user();
|
- |
|
294 |
|
290 |
|
295 |
$course = $this->getDataGenerator()->create_course();
|
291 |
$course = $this->getDataGenerator()->create_course();
|
296 |
$qbank1 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
292 |
$context = \context_course::instance($course->id);
|
297 |
$qbank1context = \context_module::instance($qbank1->cmid);
|
Línea 293... |
Línea 298... |
293 |
$othercourse = $this->getDataGenerator()->create_course();
|
298 |
$qbank2 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
294 |
$othercontext = \context_course::instance($othercourse->id);
|
299 |
$qbank2context = \context_module::instance($qbank2->cmid);
|
295 |
|
300 |
|
296 |
// Create a couple of questions.
|
301 |
// Create a couple of questions.
|
297 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
302 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
298 |
$cat = $questiongenerator->create_question_category([
|
303 |
$cat = $questiongenerator->create_question_category([
|
299 |
'contextid' => $context->id,
|
304 |
'contextid' => $qbank1context->id,
|
300 |
]);
|
305 |
]);
|
Línea 301... |
Línea 306... |
301 |
$othercat = $questiongenerator->create_question_category([
|
306 |
$othercat = $questiongenerator->create_question_category([
|
302 |
'contextid' => $othercontext->id,
|
307 |
'contextid' => $qbank2context->id,
|
303 |
]);
|
308 |
]);
|
Línea 324... |
Línea 329... |
324 |
$q5 = $questiongenerator->create_question('shortanswer', null, ['category' => $othercat->id]);
|
329 |
$q5 = $questiongenerator->create_question('shortanswer', null, ['category' => $othercat->id]);
|
Línea 325... |
Línea 330... |
325 |
|
330 |
|
326 |
$approvedcontextlist = new \core_privacy\tests\request\approved_contextlist(
|
331 |
$approvedcontextlist = new \core_privacy\tests\request\approved_contextlist(
|
327 |
$user,
|
332 |
$user,
|
328 |
'core_question',
|
333 |
'core_question',
|
329 |
[$context->id]
|
334 |
[$qbank1context->id]
|
Línea 330... |
Línea 335... |
330 |
);
|
335 |
);
|
331 |
|
336 |
|
Línea 368... |
Línea 373... |
368 |
|
373 |
|
369 |
$user = \core_user::get_user_by_username('admin');
|
374 |
$user = \core_user::get_user_by_username('admin');
|
Línea 370... |
Línea 375... |
370 |
$otheruser = $this->getDataGenerator()->create_user();
|
375 |
$otheruser = $this->getDataGenerator()->create_user();
|
- |
|
376 |
|
371 |
|
377 |
$course = $this->getDataGenerator()->create_course();
|
372 |
$course = $this->getDataGenerator()->create_course();
|
378 |
$qbank1 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
373 |
$context = \context_course::instance($course->id);
|
379 |
$qbank1context = \context_module::instance($qbank1->cmid);
|
Línea 374... |
Línea 380... |
374 |
$othercourse = $this->getDataGenerator()->create_course();
|
380 |
$qbank2 = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);
|
375 |
$othercontext = \context_course::instance($othercourse->id);
|
381 |
$qbank2context = \context_module::instance($qbank2->cmid);
|
376 |
|
382 |
|
377 |
// Create a couple of questions.
|
383 |
// Create a couple of questions.
|
378 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
384 |
$questiongenerator = $this->getDataGenerator()->get_plugin_generator('core_question');
|
379 |
$cat = $questiongenerator->create_question_category([
|
385 |
$cat = $questiongenerator->create_question_category([
|
380 |
'contextid' => $context->id,
|
386 |
'contextid' => $qbank1context->id,
|
381 |
]);
|
387 |
]);
|
Línea 382... |
Línea 388... |
382 |
$othercat = $questiongenerator->create_question_category([
|
388 |
$othercat = $questiongenerator->create_question_category([
|
383 |
'contextid' => $othercontext->id,
|
389 |
'contextid' => $qbank2context->id,
|
384 |
]);
|
390 |
]);
|
Línea 405... |
Línea 411... |
405 |
// Find out how many questions are in the question bank to start with.
|
411 |
// Find out how many questions are in the question bank to start with.
|
406 |
$questioncount = $DB->count_records('question');
|
412 |
$questioncount = $DB->count_records('question');
|
Línea 407... |
Línea 413... |
407 |
|
413 |
|
408 |
// Delete the data and check it is removed.
|
414 |
// Delete the data and check it is removed.
|
409 |
$this->setUser();
|
415 |
$this->setUser();
|
Línea 410... |
Línea 416... |
410 |
provider::delete_data_for_all_users_in_context($context);
|
416 |
provider::delete_data_for_all_users_in_context($qbank1context);
|
Línea 411... |
Línea 417... |
411 |
|
417 |
|
412 |
$this->assertEquals($questioncount, $DB->count_records('question'));
|
418 |
$this->assertEquals($questioncount, $DB->count_records('question'));
|
Línea 449... |
Línea 455... |
449 |
$this->setUser($user1);
|
455 |
$this->setUser($user1);
|
450 |
$user1data = $questiongenerator->setup_course_and_questions();
|
456 |
$user1data = $questiongenerator->setup_course_and_questions();
|
451 |
$this->setUser($user2);
|
457 |
$this->setUser($user2);
|
452 |
$user2data = $questiongenerator->setup_course_and_questions();
|
458 |
$user2data = $questiongenerator->setup_course_and_questions();
|
Línea 453... |
Línea 459... |
453 |
|
459 |
|
454 |
$course1context = \context_course::instance($user1data[1]->id);
|
460 |
$qbankcontext = \context_module::instance($user1data[4]->cmid);
|
Línea 455... |
Línea 461... |
455 |
$course1questions = $user1data[3];
|
461 |
$questions = $user1data[3];
|
456 |
|
462 |
|
Línea 457... |
Línea 463... |
457 |
// Log in as user3 and update the questions in course1.
|
463 |
// Log in as user3 and update the questions in course1.
|
458 |
$this->setUser($user3);
|
464 |
$this->setUser($user3);
|
459 |
|
465 |
|
Línea 460... |
Línea 466... |
460 |
foreach ($course1questions as $question) {
|
466 |
foreach ($questions as $question) {
|
461 |
$questiongenerator->update_question($question);
|
467 |
$questiongenerator->update_question($question);
|
Línea 462... |
Línea 468... |
462 |
}
|
468 |
}
|
463 |
|
469 |
|
464 |
$userlist = new \core_privacy\local\request\userlist($course1context, 'core_question');
|
470 |
$userlist = new \core_privacy\local\request\userlist($qbankcontext, 'core_question');
|
Línea 484... |
Línea 490... |
484 |
$user2 = $this->getDataGenerator()->create_user();
|
490 |
$user2 = $this->getDataGenerator()->create_user();
|
485 |
$user3 = $this->getDataGenerator()->create_user();
|
491 |
$user3 = $this->getDataGenerator()->create_user();
|
Línea 486... |
Línea 492... |
486 |
|
492 |
|
487 |
// Create one question as each user in different contexts.
|
493 |
// Create one question as each user in different contexts.
|
488 |
$this->setUser($user1);
|
494 |
$this->setUser($user1);
|
489 |
$course1data = $questiongenerator->setup_course_and_questions();
|
495 |
$coursedata = $questiongenerator->setup_course_and_questions();
|
490 |
$course1 = $course1data[1];
|
496 |
$qbank = $coursedata[4];
|
491 |
$course1qcat = $course1data[2];
|
497 |
$course1qcat = $coursedata[2];
|
492 |
$course1questions = $course1data[3];
|
498 |
$questions = $coursedata[3];
|
Línea 493... |
Línea 499... |
493 |
$course1context = \context_course::instance($course1->id);
|
499 |
$qbankcontext = \context_module::instance($qbank->cmid);
|
494 |
|
500 |
|
Línea 495... |
Línea 501... |
495 |
// Log in as user2 and update the questions in course1.
|
501 |
// Log in as user2 and update the questions in course1.
|
496 |
$this->setUser($user2);
|
502 |
$this->setUser($user2);
|
497 |
|
503 |
|
Línea 498... |
Línea 504... |
498 |
foreach ($course1questions as $question) {
|
504 |
foreach ($questions as $question) {
|
499 |
$questiongenerator->update_question($question);
|
505 |
$questiongenerator->update_question($question);
|
Línea 506... |
Línea 512... |
506 |
|
512 |
|
507 |
// Now, log in as user1 again, and then create a new course and add questions to that.
|
513 |
// Now, log in as user1 again, and then create a new course and add questions to that.
|
508 |
$this->setUser($user1);
|
514 |
$this->setUser($user1);
|
Línea 509... |
Línea 515... |
509 |
$questiongenerator->setup_course_and_questions();
|
515 |
$questiongenerator->setup_course_and_questions();
|
510 |
|
516 |
|
511 |
$approveduserlist = new \core_privacy\local\request\approved_userlist($course1context, 'core_question',
|
517 |
$approveduserlist = new \core_privacy\local\request\approved_userlist($qbankcontext, 'core_question',
|
Línea 512... |
Línea 518... |
512 |
[$user1->id, $user2->id]);
|
518 |
[$user1->id, $user2->id]);
|
513 |
provider::delete_data_for_users($approveduserlist);
|
519 |
provider::delete_data_for_users($approveduserlist);
|
Línea 519... |
Línea 525... |
519 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
525 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
520 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
526 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
521 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
527 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
522 |
WHERE qc.contextid = ?
|
528 |
WHERE qc.contextid = ?
|
523 |
AND (q.createdby = ? OR q.modifiedby = ? OR q.createdby = ? OR q.modifiedby = ?)",
|
529 |
AND (q.createdby = ? OR q.modifiedby = ? OR q.createdby = ? OR q.modifiedby = ?)",
|
524 |
[$course1context->id, $user1->id, $user1->id, $user2->id, $user2->id])
|
530 |
[$qbankcontext->id, $user1->id, $user1->id, $user2->id, $user2->id])
|
525 |
);
|
531 |
);
|
Línea 526... |
Línea 532... |
526 |
|
532 |
|
527 |
// User3 data in course1 should not change.
|
533 |
// User3 data in course1 should not change.
|
528 |
$this->assertEquals(2,
|
534 |
$this->assertEquals(2,
|
529 |
$DB->count_records_sql("SELECT COUNT(q.id)
|
535 |
$DB->count_records_sql("SELECT COUNT(q.id)
|
530 |
FROM {question} q
|
536 |
FROM {question} q
|
531 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
537 |
JOIN {question_versions} qv ON qv.questionid = q.id
|
532 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
538 |
JOIN {question_bank_entries} qbe ON qbe.id = qv.questionbankentryid
|
533 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
539 |
JOIN {question_categories} qc ON qc.id = qbe.questioncategoryid
|
534 |
WHERE qc.contextid = ? AND (q.createdby = ? OR q.modifiedby = ?)",
|
540 |
WHERE qc.contextid = ? AND (q.createdby = ? OR q.modifiedby = ?)",
|
535 |
[$course1context->id, $user3->id, $user3->id])
|
541 |
[$qbankcontext->id, $user3->id, $user3->id])
|
Línea 536... |
Línea 542... |
536 |
);
|
542 |
);
|
537 |
|
543 |
|
538 |
// User1 has authored 2 questions in another course.
|
544 |
// User1 has authored 2 questions in another course.
|