MDL-63817 block_timeline: Persist page limits when sorting by dates
[moodle.git] / blocks / timeline / tests / privacy_test.php
CommitLineData
9e95193e
P
1<?php
2// This file is part of Moodle - http://moodle.org/
3//
4// Moodle is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// Moodle is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16
17/**
18 * Unit tests for the block_timeline implementation of the privacy API.
19 *
20 * @package block_timeline
21 * @category test
22 * @copyright 2018 Peter Dias <peter@moodle.com>
23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24 */
25
26defined('MOODLE_INTERNAL') || die();
27
28use \core_privacy\local\request\writer;
29use \block_timeline\privacy\provider;
30
31/**
32 * Unit tests for the block_timeline implementation of the privacy API.
33 *
34 * @copyright 2018 Peter Dias <peter@moodle.com>
35 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36 */
37class block_timeline_privacy_testcase extends \core_privacy\tests\provider_testcase {
38
39 /**
40 * Ensure that export_user_preferences returns no data if the user has not visited the myoverview block.
41 */
42 public function test_export_user_preferences_no_pref() {
43 $this->resetAfterTest();
44
45 $user = $this->getDataGenerator()->create_user();
46 provider::export_user_preferences($user->id);
47 $writer = writer::with_context(\context_system::instance());
48 $this->assertFalse($writer->has_any_data());
49 }
50
51 /**
2044a539
P
52 * Test the export_user_preferences given different inputs
53 *
54 * @param string $type The name of the user preference to get/set
55 * @param string $value The value you are storing
56 * @param string $expected The expected value override
57 *
58 * @dataProvider user_preference_provider
9e95193e 59 */
2044a539 60 public function test_export_user_preferences($type, $value, $expected) {
9e95193e 61 $this->resetAfterTest();
9e95193e 62 $user = $this->getDataGenerator()->create_user();
2044a539 63 set_user_preference($type, $value, $user);
9e95193e
P
64 provider::export_user_preferences($user->id);
65 $writer = writer::with_context(\context_system::instance());
66 $blockpreferences = $writer->get_user_preferences('block_timeline');
2044a539
P
67 if (!$expected) {
68 $expected = get_string($value, 'block_timeline');
69 }
70 $this->assertEquals($expected, $blockpreferences->{$type}->value);
9e95193e
P
71 }
72
73 /**
2044a539
P
74 * Create an array of valid user preferences for the timeline block.
75 *
76 * @return array Array of valid user preferences.
9e95193e 77 */
2044a539
P
78 public function user_preference_provider() {
79 return array(
80 array('block_timeline_user_sort_preference', 'sortbydates', ''),
81 array('block_timeline_user_sort_preference', 'sortbycourses', ''),
82 array('block_timeline_user_sort_preference', 'next7days', ''),
83 array('block_timeline_user_sort_preference', 'all', ''),
84 array('block_timeline_user_limit_preference', 5, 5),
85 );
9e95193e
P
86 }
87}