Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / tests / src / Unit / Routing / ParameterBindingTest.php
diff --git a/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Routing/ParameterBindingTest.php b/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Routing/ParameterBindingTest.php
new file mode 100644 (file)
index 0000000..6d4d5bc
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+
+namespace Drupal\Tests\drupalmoduleupgrader\Unit\Routing;
+
+use Drupal\drupalmoduleupgrader\Routing\ParameterBinding;
+use Drupal\drupalmoduleupgrader\Utility\Path\Drupal7\PathUtility;
+use Drupal\Tests\UnitTestCase;
+use Pharborist\Functions\ParameterNode;
+use Pharborist\Types\StringNode;
+
+/**
+ * @group DMU.Routing
+ */
+class ParameterBindingTest extends UnitTestCase {
+
+  /**
+   * @var ParameterNode
+   */
+  private $parameter;
+
+  public function setUp() {
+    // ParameterNode supports variadic parameters, which use the T_ELLIPSIS
+    // token. Which will be undefined on any PHP older than 5.6. So this kludges
+    // around that.
+    if (! defined('T_ELLIPSIS')) {
+      define('T_ELLIPSIS', 0);
+    }
+
+    $this->parameter = ParameterNode::create('foo');
+  }
+
+  public function testGetParameter() {
+    $path = new PathUtility('foo/baz');
+    $binding = new ParameterBinding($path, $this->parameter);
+    $this->assertSame($this->parameter, $binding->getParameter());
+  }
+
+  public function testInPath() {
+    $path = new PathUtility('foo/baz');
+    $binding = new ParameterBinding($path, $this->parameter);
+    $this->assertFalse($binding->inPath());
+
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter, 1);
+    $this->assertTrue($binding->inPath());
+  }
+
+  public function testHasArgument() {
+    $path = new PathUtility('foo/baz');
+    $binding = new ParameterBinding($path, $this->parameter);
+    $this->assertFalse($binding->hasArgument());
+
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter, 1);
+    $this->assertTrue($binding->hasArgument());
+
+    $path = new PathUtility('foo/%');
+    $binding = new ParameterBinding($path, $this->parameter, 'baz');
+    $this->assertTrue($binding->hasArgument());
+  }
+
+  public function testGetArgument() {
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter, 1);
+    $this->assertSame(1, $binding->getArgument());
+
+    $path = new PathUtility('foo/%');
+    $binding = new ParameterBinding($path, $this->parameter, 'baz');
+    $this->assertEquals('baz', $binding->getArgument());
+  }
+
+  public function testIsPathPosition() {
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter, 1);
+    $this->assertTrue($binding->isPathPosition());
+
+    $path = new PathUtility('foo/%');
+    $binding = new ParameterBinding($path, $this->parameter, 'baz');
+    $this->assertFalse($binding->isPathPosition());
+  }
+
+  public function testGetValuePathPositionInPath() {
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter, 1);
+    $value = $binding->getValue();
+    $this->assertInstanceOf('\Drupal\drupalmoduleupgrader\Utility\Path\PathComponentInterface', $value);
+    $this->assertEquals('%node', $value);
+  }
+
+  public function testGetValuePathPositionNotInPath() {
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter, 2);
+    $value = $binding->getValue();
+    $this->assertInstanceOf('\Drupal\drupalmoduleupgrader\Utility\Path\PathComponentInterface', $value);
+    $this->assertEquals('%', $value);
+  }
+
+  public function testGetValueStaticArgument() {
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter, 'baz');
+    $this->assertEquals('baz', $binding->getValue());
+  }
+
+  public function testGetValueNoArgument() {
+    $this->parameter->setValue(StringNode::fromValue('har'));
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter);
+    $this->assertEquals('har', $binding->getValue());
+  }
+
+  public function testGetValueNoArgumentNoDefaultvalue() {
+    $path = new PathUtility('foo/%node');
+    $binding = new ParameterBinding($path, $this->parameter);
+    $this->assertNull($binding->getValue());
+  }
+
+}