X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fdrupalmoduleupgrader%2Ftests%2Fsrc%2FUnit%2FPlugin%2FDMU%2FRewriter%2FGenericTest.php;fp=web%2Fmodules%2Fcontrib%2Fdrupalmoduleupgrader%2Ftests%2Fsrc%2FUnit%2FPlugin%2FDMU%2FRewriter%2FGenericTest.php;h=fdf5aafbdf291bd8f5819c6ca1451ae6357459be;hp=0000000000000000000000000000000000000000;hb=8acec36f19c470dfcda1ae2336826a782f41874c;hpb=e0411c4e83ba0d079034db83c3f7f55be24a0e35 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 index 000000000..fdf5aafbd --- /dev/null +++ b/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Plugin/DMU/Rewriter/GenericTest.php @@ -0,0 +1,140 @@ + [ + '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()); + } + +}