diff --git a/core/modules/contextual/tests/src/Kernel/ContextualUnitTest.php b/core/modules/contextual/tests/src/Kernel/ContextualUnitTest.php index 9e088aefb70a4ca362c4091b2d11a8e6e58b3c03..dc46bef32a4432b161a268e7d5437cd920746aa7 100644 --- a/core/modules/contextual/tests/src/Kernel/ContextualUnitTest.php +++ b/core/modules/contextual/tests/src/Kernel/ContextualUnitTest.php @@ -5,8 +5,7 @@ use Drupal\KernelTests\KernelTestBase; /** - * Tests all edge cases of converting from #contextual_links to ids and vice - * versa. + * Tests edge cases for converting between contextual links and IDs. * * @group contextual */ @@ -23,14 +22,13 @@ class ContextualUnitTest extends KernelTestBase { * Provides testcases for both test functions. * * Used in testContextualLinksToId() and testContextualIdToLinks(). + * + * @return array[] + * Test cases. */ - public function _contextual_links_id_testcases() { - // Test branch conditions: - // - one group. - // - one dynamic path argument. - // - no metadata. - $tests[] = [ - 'links' => [ + public function contextualLinksDataProvider(): array { + $tests['one group, one dynamic path argument, no metadata'] = [ + [ 'node' => [ 'route_parameters' => [ 'node' => '14031991', @@ -38,33 +36,25 @@ public function _contextual_links_id_testcases() { 'metadata' => ['langcode' => 'en'], ], ], - 'id' => 'node:node=14031991:langcode=en', + 'node:node=14031991:langcode=en', ]; - // Test branch conditions: - // - one group. - // - multiple dynamic path arguments. - // - no metadata. - $tests[] = [ - 'links' => [ + $tests['one group, multiple dynamic path arguments, no metadata'] = [ + [ 'foo' => [ 'route_parameters' => [ - 'bar', + 0 => 'bar', 'key' => 'baz', - 'qux', + 1 => 'qux', ], 'metadata' => ['langcode' => 'en'], ], ], - 'id' => 'foo:0=bar&key=baz&1=qux:langcode=en', + 'foo:0=bar&key=baz&1=qux:langcode=en', ]; - // Test branch conditions: - // - one group. - // - one dynamic path argument. - // - metadata. - $tests[] = [ - 'links' => [ + $tests['one group, one dynamic path argument, metadata'] = [ + [ 'views_ui_edit' => [ 'route_parameters' => [ 'view' => 'frontpage', @@ -76,14 +66,11 @@ public function _contextual_links_id_testcases() { ], ], ], - 'id' => 'views_ui_edit:view=frontpage:location=page&display=page_1&langcode=en', + 'views_ui_edit:view=frontpage:location=page&display=page_1&langcode=en', ]; - // Test branch conditions: - // - multiple groups. - // - multiple dynamic path arguments. - $tests[] = [ - 'links' => [ + $tests['multiple groups, multiple dynamic path arguments'] = [ + [ 'node' => [ 'route_parameters' => [ 'node' => '14031991', @@ -92,9 +79,9 @@ public function _contextual_links_id_testcases() { ], 'foo' => [ 'route_parameters' => [ - 'bar', + 0 => 'bar', 'key' => 'baz', - 'qux', + 1 => 'qux', ], 'metadata' => ['langcode' => 'en'], ], @@ -103,30 +90,42 @@ public function _contextual_links_id_testcases() { 'metadata' => ['langcode' => 'en'], ], ], - 'id' => 'node:node=14031991:langcode=en|foo:0=bar&key=baz&1=qux:langcode=en|edge:0=20011988:langcode=en', + 'node:node=14031991:langcode=en|foo:0=bar&key=baz&1=qux:langcode=en|edge:0=20011988:langcode=en', ]; return $tests; } /** - * Tests _contextual_links_to_id(). + * Tests the conversion from contextual links to IDs. + * + * @param array $links + * The #contextual_links property value array. + * @param string $id + * The serialized representation of the passed links. + * + * @covers ::_contextual_links_to_id + * + * @dataProvider contextualLinksDataProvider */ - public function testContextualLinksToId() { - $tests = $this->_contextual_links_id_testcases(); - foreach ($tests as $test) { - $this->assertSame($test['id'], _contextual_links_to_id($test['links'])); - } + public function testContextualLinksToId(array $links, string $id) { + $this->assertSame($id, _contextual_links_to_id($links)); } /** - * Tests _contextual_id_to_links(). + * Tests the conversion from contextual ID to links. + * + * @param array $links + * The #contextual_links property value array. + * @param string $id + * The serialized representation of the passed links. + * + * @covers ::_contextual_id_to_links + * + * @dataProvider contextualLinksDataProvider */ - public function testContextualIdToLinks() { - $tests = $this->_contextual_links_id_testcases(); - foreach ($tests as $test) { - $this->assertSame($test['links'], _contextual_id_to_links($test['id'])); - } + public function testContextualIdToLinks(array $links, string $id) { + $this->assertSame($links, _contextual_id_to_links($id)); } }