Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / tests / src / Unit / Plugin / DMU / Rewriter / GenericTest.php
diff --git a/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Plugin/DMU/Rewriter/GenericTest.php b/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Plugin/DMU/Rewriter/GenericTest.php
new file mode 100644 (file)
index 0000000..fdf5aaf
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+
+namespace Drupal\Tests\drupalmoduleupgrader\Unit\Plugin\DMU\Rewriter;
+
+use Drupal\drupalmoduleupgrader\Plugin\DMU\Rewriter\Generic as GenericRewriter;
+use Drupal\Tests\drupalmoduleupgrader\Unit\TestBase;
+use Pharborist\Parser;
+
+/**
+ * @group DMU.Rewriter
+ * @covers \Drupal\drupalmoduleupgrader\Plugin\DMU\Rewriter\Generic
+ */
+class GenericTest extends TestBase {
+
+  /**
+   * @var \Drupal\drupalmoduleupgrader\RewriterInterface
+   */
+  protected $plugin;
+
+  public function setUp() {
+    parent::setUp();
+
+    $definition = [
+      'properties' => [
+        'nid' => [
+          'get' => 'id',
+        ],
+        'title' => [
+          'get' => 'getTitle',
+          'set' => 'setTitle',
+        ],
+      ],
+    ];
+    $this->plugin = $this->getPlugin([], $definition);
+  }
+
+  public function testRewriteValidPropertyAsGetter() {
+    /** @var \Pharborist\Objects\ObjectPropertyNode $expr */
+    $expr = Parser::parseExpression('$node->nid');
+    $rewritten = $this->plugin->rewriteAsGetter($expr, 'nid');
+    $this->assertInstanceOf('\Pharborist\Objects\ObjectMethodCallNode', $rewritten);
+    $this->assertEquals('$node->id()', $rewritten->getText());
+  }
+
+  public function testRewriteInvalidPropertyAsGetter() {
+    /** @var \Pharborist\Objects\ObjectPropertyNode $expr */
+    $expr = Parser::parseExpression('$node->baz');
+    $rewritten = $this->plugin->rewriteAsGetter($expr, 'baz');
+    $this->assertNull($rewritten);
+  }
+
+  public function testRewriteValidPropertyAsSetter() {
+    /** @var \Pharborist\Operators\AssignNode $expr */
+    $expr = Parser::parseExpression('$node->title = "Foobaz"');
+    $rewritten = $this->plugin->rewriteAsSetter($expr->getLeftOperand(), 'title', $expr);
+    $this->assertInstanceOf('\Pharborist\Objects\ObjectMethodCallNode', $rewritten);
+    $this->assertEquals('$node->setTitle("Foobaz")', $rewritten->getText());
+  }
+
+  public function testRewriteInvalidPropertyAsSetter() {
+    /** @var \Pharborist\Operators\AssignNode $expr */
+    $expr = Parser::parseExpression('$node->baz = "Blorf!"');
+    $rewritten = $this->plugin->rewriteAsSetter($expr->getLeftOperand(), 'baz', $expr);
+    $this->assertNull($rewritten);
+
+    /** @var \Pharborist\Operators\AssignNode $expr */
+    $expr = Parser::parseExpression('$node->nid = 30');
+    $rewritten = $this->plugin->rewriteAsSetter($expr->getLeftOperand(), 'nid', $expr);
+    $this->assertNull($rewritten);
+  }
+
+  public function testRewriteFieldLookup() {
+    /** @var \Pharborist\ArrayLookupNode $lookup */
+    $lookup = Parser::parseExpression('$node->field_foo[LANGUAGE_NONE][0]["value"]');
+    $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
+    $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
+    $this->assertEquals('$node->field_foo[0]->value', $rewritten->getText());
+
+    $lookup = Parser::parseExpression('$node->field_foo[\Drupal\Core\Language\Language::LANGCODE_NOT_SPECIFIED][0]["value"]');
+    $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
+    $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
+    $this->assertEquals('$node->field_foo[0]->value', $rewritten->getText());
+
+    $lookup = Parser::parseExpression('$node->field_foo["und"][0]["value"]');
+    $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
+    $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
+    $this->assertEquals('$node->field_foo[0]->value', $rewritten->getText());
+
+    $lookup = Parser::parseExpression('$node->field_foo["en"][0]["value"]');
+    $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
+    $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
+    $this->assertEquals('$node->getTranslation("en")->field_foo[0]->value', $rewritten->getText());
+
+    $lookup = Parser::parseExpression('$node->field_foo["und"][2]["wambooli"]');
+    $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
+    $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
+    $this->assertEquals('$node->field_foo[2]->wambooli', $rewritten->getText());
+  }
+
+  public function testRewriteEmpty() {
+    $code = <<<'END'
+function foo($baz) {
+  if (empty($baz->nid)) {
+  }
+}
+END;
+    /** @var \Pharborist\Functions\FunctionDeclarationNode $func */
+    $func = Parser::parseSnippet($code);
+    $this->plugin->rewrite($func->getParameterAtIndex(0));
+
+    $expected = <<<'END'
+function foo($baz) {
+  if (!$baz->id()) {
+  }
+}
+END;
+    $this->assertEquals($expected, $func->getText());
+  }
+
+  public function testRewriteIsset() {
+    $code = <<<'END'
+function foo($baz) {
+  if (isset($baz->title)) {
+  }
+}
+END;
+    /** @var \Pharborist\Functions\FunctionDeclarationNode $func */
+    $func = Parser::parseSnippet($code);
+    $this->plugin->rewrite($func->getParameterAtIndex(0));
+
+    $expected = <<<'END'
+function foo($baz) {
+  if (!$baz->getTitle()) {
+  }
+}
+END;
+    $this->assertEquals($expected, $func->getText());
+  }
+
+}