From 20342fca7ed69d4f106878e80e692c2104bb0cdb Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Wed, 17 Oct 2018 12:53:27 +0800 Subject: [PATCH] MDL-62560 tool_dataprivacy: Add unit test for filtered userlist --- .../tests/filtered_userlist_test.php | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 admin/tool/dataprivacy/tests/filtered_userlist_test.php diff --git a/admin/tool/dataprivacy/tests/filtered_userlist_test.php b/admin/tool/dataprivacy/tests/filtered_userlist_test.php new file mode 100644 index 00000000000..cdffded9be2 --- /dev/null +++ b/admin/tool/dataprivacy/tests/filtered_userlist_test.php @@ -0,0 +1,99 @@ +. + +/** + * Unit tests for the filtered_userlist. + * + * @package tool_dataprivacy + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +/** + * Unit tests for the filtered_userlist. + * + * @package tool_dataprivacy + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class tool_dataprivacy_filtered_userlist_testcase extends advanced_testcase { + /** + * Test the apply_expired_contexts_filters function with arange of options. + * + * @dataProvider apply_expired_contexts_filters_provider + * @param array $initial The set of userids in the initial filterlist. + * @param array $expired The set of userids considered as expired. + * @param array $unexpired The set of userids considered as unexpired. + * @param array $expected The expected values. + */ + public function test_apply_expired_contexts_filters(array $initial, array $expired, array $unexpired, array $expected) { + $userlist = $this->getMockBuilder(\tool_dataprivacy\filtered_userlist::class) + ->disableOriginalConstructor() + ->setMethods(null) + ->getMock(); + + $rc = new \ReflectionClass(\tool_dataprivacy\filtered_userlist::class); + $rcm = $rc->getMethod('set_userids'); + $rcm->setAccessible(true); + $rcm->invoke($userlist, $initial); + + + $userlist->apply_expired_context_filters($expired, $unexpired); + $filtered = $userlist->get_userids(); + + sort($expected); + sort($filtered); + $this->assertEquals($expected, $filtered); + } + + /** + * Data provider for the apply_expired_contexts_filters function. + * + * @return array + */ + public function apply_expired_contexts_filters_provider() : array { + return [ + // Entire list should be preserved. + 'No overrides' => [ + 'users' => [1, 2, 3, 4, 5], + 'expired' => [], + 'unexpired' => [], + [1, 2, 3, 4, 5], + ], + // The list should be filtered to only keep the expired users. + 'Expired only' => [ + 'users' => [1, 2, 3, 4, 5], + 'expired' => [2, 3, 4], + 'unexpired' => [], + 'expected' => [2, 3, 4], + ], + // The list should be filtered to remove any unexpired users. + 'Unexpired only' => [ + 'users' => [1, 2, 3, 4, 5], + 'expired' => [], + 'unexpired' => [1, 5], + 'expected' => [2, 3, 4], + ], + // The list should be filtered to only keep expired users who are not on the unexpired list. + 'Combination of expired and unexpired' => [ + 'users' => [1, 2, 3, 4, 5], + 'expired' => [1, 2, 3], + 'unexpired' => [1, 5], + 'expected' => [2, 3], + ], + ]; + } +}