diff core/modules/contextual/tests/src/Kernel/ContextualUnitTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 129ea1e6d783
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/contextual/tests/src/Kernel/ContextualUnitTest.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,130 @@
+<?php
+
+namespace Drupal\Tests\contextual\Kernel;
+
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests all edge cases of converting from #contextual_links to ids and vice
+ * versa.
+ *
+ * @group contextual
+ */
+class ContextualUnitTest extends KernelTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['contextual'];
+
+  /**
+   * Provides testcases for testContextualLinksToId() and
+   */
+  public function _contextual_links_id_testcases() {
+    // Test branch conditions:
+    // - one group.
+    // - one dynamic path argument.
+    // - no metadata.
+    $tests[] = [
+      'links' => [
+        'node' => [
+          'route_parameters' => [
+            'node' => '14031991',
+          ],
+          'metadata' => ['langcode' => 'en'],
+        ],
+      ],
+      'id' => 'node:node=14031991:langcode=en',
+    ];
+
+    // Test branch conditions:
+    // - one group.
+    // - multiple dynamic path arguments.
+    // - no metadata.
+    $tests[] = [
+      'links' => [
+        'foo' => [
+          'route_parameters' => [
+            'bar',
+            'key' => 'baz',
+            'qux',
+          ],
+          'metadata' => ['langcode' => 'en'],
+        ],
+      ],
+      'id' => 'foo:0=bar&key=baz&1=qux:langcode=en',
+    ];
+
+    // Test branch conditions:
+    // - one group.
+    // - one dynamic path argument.
+    // - metadata.
+    $tests[] = [
+      'links' => [
+        'views_ui_edit' => [
+          'route_parameters' => [
+            'view' => 'frontpage'
+          ],
+          'metadata' => [
+            'location' => 'page',
+            'display' => 'page_1',
+            'langcode' => 'en',
+          ],
+        ],
+      ],
+      'id' => 'views_ui_edit:view=frontpage:location=page&display=page_1&langcode=en',
+    ];
+
+    // Test branch conditions:
+    // - multiple groups.
+    // - multiple dynamic path arguments.
+    $tests[] = [
+      'links' => [
+        'node' => [
+          'route_parameters' => [
+            'node' => '14031991',
+          ],
+          'metadata' => ['langcode' => 'en'],
+        ],
+        'foo' => [
+          'route_parameters' => [
+            'bar',
+            'key' => 'baz',
+            'qux',
+          ],
+          'metadata' => ['langcode' => 'en'],
+        ],
+        'edge' => [
+          'route_parameters' => ['20011988'],
+          'metadata' => ['langcode' => 'en'],
+        ],
+      ],
+      'id' => '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().
+   */
+  public function testContextualLinksToId() {
+    $tests = $this->_contextual_links_id_testcases();
+    foreach ($tests as $test) {
+      $this->assertIdentical(_contextual_links_to_id($test['links']), $test['id']);
+    }
+  }
+
+  /**
+   * Tests _contextual_id_to_links().
+   */
+  public function testContextualIdToLinks() {
+    $tests = $this->_contextual_links_id_testcases();
+    foreach ($tests as $test) {
+      $this->assertIdentical(_contextual_id_to_links($test['id']), $test['links']);
+    }
+  }
+
+}