MDL-83468 phpunit: assertEqualsCanonicalizing now compares keys too

In previous versions of PHPUnit, the `assertEqualsCanonicalizing()`
method compared values only, ignoring the keys entirely. Since PHPUnit
10 the method now checks keys where they are non-numeric.

To solve this we call `array_values()`.
This commit is contained in:
Andrew Nicols
2025-01-20 16:47:56 +01:00
committed by Sara Arjona
parent bdb5309dfb
commit 3b1118cfd4
11 changed files with 34 additions and 27 deletions
@@ -24,14 +24,11 @@
*/
namespace tool_policy\privacy;
use core_privacy\local\metadata\collection;
use tool_policy\privacy\provider;
use tool_policy\api;
use tool_policy\policy_version;
use core_privacy\local\request\approved_contextlist;
use core_privacy\local\request\writer;
defined('MOODLE_INTERNAL') || die();
use tool_policy\api;
use tool_policy\policy_version;
use tool_policy\privacy\provider;
/**
* Privacy provider tests class.
@@ -278,7 +275,7 @@ final class provider_test extends \core_privacy\tests\provider_testcase {
$this->assertCount(3, $contextlist);
$this->assertEqualsCanonicalizing(
[$managercontext->id, $usercontext->id, $systemcontext->id],
$contextlist->get_contextids()
array_values($contextlist->get_contextids()),
);
$approvedcontextlist = new approved_contextlist($this->user, 'tool_policy', [$usercontext->id]);
@@ -212,7 +212,7 @@ final class provider_test extends \core_privacy\tests\provider_testcase {
$this->assertCount(2, $contextlist);
$contextids = $contextlist->get_contextids();
$this->assertEqualsCanonicalizing([$coursecontext1->id, $coursecontext2->id], $contextids);
$this->assertEqualsCanonicalizing([$coursecontext1->id, $coursecontext2->id], array_values($contextids));
}
/**
+2 -2
View File
@@ -104,10 +104,10 @@ abstract class cachestore_tests extends advanced_testcase {
// Test find and find with prefix if this class implements the searchable interface.
if ($instance->is_searchable()) {
// Extra settings here ignore the return order of the array.
$this->assertEqualsCanonicalizing(['test3', 'test1', 'test2', 'other3'], $instance->find_all());
$this->assertEqualsCanonicalizing(['test3', 'test1', 'test2', 'other3'], array_values($instance->find_all()));
// Extra settings here ignore the return order of the array.
$this->assertEqualsCanonicalizing(['test2', 'test1', 'test3'], $instance->find_by_prefix('test'));
$this->assertEqualsCanonicalizing(['test2', 'test1', 'test3'], array_values($instance->find_by_prefix('test')));
$this->assertEquals(['test2'], $instance->find_by_prefix('test2'));
$this->assertEquals(['other3'], $instance->find_by_prefix('other'));
$this->assertEquals([], $instance->find_by_prefix('nothere'));
+7 -3
View File
@@ -117,9 +117,13 @@ final class provider_test extends provider_testcase {
list($sql, $params) = $DB->get_in_or_equal([$courses[1]->id, $courses[2]->id], SQL_PARAMS_NAMED);
$r = provider::get_customfields_data_contexts('core_course', 'course', '=0',
$sql, $params);
$this->assertEqualsCanonicalizing([\context_course::instance($courses[1]->id)->id,
\context_course::instance($courses[2]->id)->id],
$r->get_contextids());
$this->assertEqualsCanonicalizing(
[
\context_course::instance($courses[1]->id)->id,
\context_course::instance($courses[2]->id)->id,
],
array_values($r->get_contextids()),
);
}
/**
+3 -3
View File
@@ -252,7 +252,7 @@ final class provider_test extends provider_testcase {
$this->assertEqualsCanonicalizing([
$this->contexts[1]->id,
$this->contexts[2]->id,
], $contextids);
], array_values($contextids));
// Get contexts for the second user.
$contextids = provider::get_contexts_for_userid($this->users[2]->id)->get_contextids();
@@ -260,7 +260,7 @@ final class provider_test extends provider_testcase {
$this->contexts[1]->id,
$this->contexts[2]->id,
$this->contexts[3]->id,
], $contextids);
], array_values($contextids));
// Get contexts for the third user.
$contextids = provider::get_contexts_for_userid($this->users[3]->id)->get_contextids();
@@ -268,7 +268,7 @@ final class provider_test extends provider_testcase {
$this->contexts[1]->id,
$this->contexts[2]->id,
$this->contexts[3]->id,
], $contextids);
], array_values($contextids));
}
/**
+4 -4
View File
@@ -192,19 +192,19 @@ final class provider_test extends provider_testcase {
// Student1 has data in workshop11 (author + self reviewer), workshop12 (author) and workshop21 (reviewer).
$contextlist = \mod_workshop\privacy\provider::get_contexts_for_userid($this->student1->id);
$this->assertInstanceOf(\core_privacy\local\request\contextlist::class, $contextlist);
$this->assertEqualsCanonicalizing([$context11->id, $context12->id, $context21->id], $contextlist->get_contextids());
$this->assertEqualsCanonicalizing([$context11->id, $context12->id, $context21->id], array_values($contextlist->get_contextids()));
// Student2 has data in workshop11 (reviewer), workshop12 (reviewer) and workshop21 (author).
$contextlist = \mod_workshop\privacy\provider::get_contexts_for_userid($this->student2->id);
$this->assertEqualsCanonicalizing([$context11->id, $context12->id, $context21->id], $contextlist->get_contextids());
$this->assertEqualsCanonicalizing([$context11->id, $context12->id, $context21->id], array_values($contextlist->get_contextids()));
// Student3 has data in workshop11 (reviewer).
$contextlist = \mod_workshop\privacy\provider::get_contexts_for_userid($this->student3->id);
$this->assertEqualsCanonicalizing([$context11->id], $contextlist->get_contextids());
$this->assertEqualsCanonicalizing([$context11->id], array_values($contextlist->get_contextids()));
// Teacher4 has data in workshop12 (gradeoverby) and workshop21 (gradinggradeoverby).
$contextlist = \mod_workshop\privacy\provider::get_contexts_for_userid($this->teacher4->id);
$this->assertEqualsCanonicalizing([$context21->id, $context12->id], $contextlist->get_contextids());
$this->assertEqualsCanonicalizing([$context21->id, $context12->id], array_values($contextlist->get_contextids()));
}
/**
@@ -142,7 +142,7 @@ final class provider_test extends \core_privacy\tests\provider_testcase {
$this->assertCount(2, $contextlist);
$contextids = $contextlist->get_contextids();
$this->assertEqualsCanonicalizing([$coursecontext1->id, $coursecontext2->id], $contextids);
$this->assertEqualsCanonicalizing([$coursecontext1->id, $coursecontext2->id], array_values($contextids));
}
/**
+5 -1
View File
@@ -226,7 +226,11 @@ final class provider_test extends \core_privacy\tests\provider_testcase {
$expectedcontext->id,
$otherexpectedcontext->id,
];
$this->assertEqualsCanonicalizing($expectedcontexts, $contextlist->get_contextids(), 'Contexts not equal');
$this->assertEqualsCanonicalizing(
$expectedcontexts,
array_values($contextlist->get_contextids()),
'Contexts not equal',
);
// Run the export_user_Data as the test user.
$this->setUser($user);
+4 -2
View File
@@ -48,8 +48,10 @@ final class generator_test extends advanced_testcase {
$report = $generator->create_report(['name' => 'My report', 'source' => users::class, 'tags' => ['cat', 'dog']]);
$this->assertTrue(report::record_exists($report->get('id')));
$this->assertEqualsCanonicalizing(['cat', 'dog'],
core_tag_tag::get_item_tags_array('core_reportbuilder', 'reportbuilder_report', $report->get('id')));
$this->assertEqualsCanonicalizing(
['cat', 'dog'],
array_values(core_tag_tag::get_item_tags_array('core_reportbuilder', 'reportbuilder_report', $report->get('id'))),
);
}
/**
@@ -56,7 +56,7 @@ final class base_test extends advanced_testcase {
$systemreport->add_base_condition_simple('username', 'admin');
[$where, $params] = $systemreport->get_base_condition();
$this->assertStringMatchesFormat('username = :%a', $where);
$this->assertEqualsCanonicalizing(['admin'], $params);
$this->assertEqualsCanonicalizing(['admin'], array_values($params));
}
/**
+2 -2
View File
@@ -409,7 +409,7 @@ final class manager_test extends \advanced_testcase {
$manager = \core\di::get(\core_sms\manager::class);
$this->expectException(\coding_exception::class);
$this->getExpectedExceptionMessage('Sensitive messages cannot be sent asynchronously');
$this->expectExceptionMessage('Sensitive messages cannot be sent asynchronously');
$manager->send(
recipientnumber: '+447123456789',
content: 'Hello, world!',
@@ -427,7 +427,7 @@ final class manager_test extends \advanced_testcase {
$manager = \core\di::get(\core_sms\manager::class);
$this->expectException(\coding_exception::class);
$this->getExpectedExceptionMessage('Asynchronous sending is not yet implemented');
$this->expectExceptionMessage('Asynchronous sending is not yet implemented');
$manager->send(
recipientnumber: '+447123456789',
content: 'Hello, world!',