Proyectos de Subversion Moodle

Rev

Rev 11 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 11 Rev 1441
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.