Further modules included.
[yaffs-website] / web / modules / contrib / drupalmoduleupgrader / tests / src / Unit / Plugin / DMU / Rewriter / GenericTest.php
1 <?php
2
3 namespace Drupal\Tests\drupalmoduleupgrader\Unit\Plugin\DMU\Rewriter;
4
5 use Drupal\drupalmoduleupgrader\Plugin\DMU\Rewriter\Generic as GenericRewriter;
6 use Drupal\Tests\drupalmoduleupgrader\Unit\TestBase;
7 use Pharborist\Parser;
8
9 /**
10  * @group DMU.Rewriter
11  * @covers \Drupal\drupalmoduleupgrader\Plugin\DMU\Rewriter\Generic
12  */
13 class GenericTest extends TestBase {
14
15   /**
16    * @var \Drupal\drupalmoduleupgrader\RewriterInterface
17    */
18   protected $plugin;
19
20   public function setUp() {
21     parent::setUp();
22
23     $definition = [
24       'properties' => [
25         'nid' => [
26           'get' => 'id',
27         ],
28         'title' => [
29           'get' => 'getTitle',
30           'set' => 'setTitle',
31         ],
32       ],
33     ];
34     $this->plugin = $this->getPlugin([], $definition);
35   }
36
37   public function testRewriteValidPropertyAsGetter() {
38     /** @var \Pharborist\Objects\ObjectPropertyNode $expr */
39     $expr = Parser::parseExpression('$node->nid');
40     $rewritten = $this->plugin->rewriteAsGetter($expr, 'nid');
41     $this->assertInstanceOf('\Pharborist\Objects\ObjectMethodCallNode', $rewritten);
42     $this->assertEquals('$node->id()', $rewritten->getText());
43   }
44
45   public function testRewriteInvalidPropertyAsGetter() {
46     /** @var \Pharborist\Objects\ObjectPropertyNode $expr */
47     $expr = Parser::parseExpression('$node->baz');
48     $rewritten = $this->plugin->rewriteAsGetter($expr, 'baz');
49     $this->assertNull($rewritten);
50   }
51
52   public function testRewriteValidPropertyAsSetter() {
53     /** @var \Pharborist\Operators\AssignNode $expr */
54     $expr = Parser::parseExpression('$node->title = "Foobaz"');
55     $rewritten = $this->plugin->rewriteAsSetter($expr->getLeftOperand(), 'title', $expr);
56     $this->assertInstanceOf('\Pharborist\Objects\ObjectMethodCallNode', $rewritten);
57     $this->assertEquals('$node->setTitle("Foobaz")', $rewritten->getText());
58   }
59
60   public function testRewriteInvalidPropertyAsSetter() {
61     /** @var \Pharborist\Operators\AssignNode $expr */
62     $expr = Parser::parseExpression('$node->baz = "Blorf!"');
63     $rewritten = $this->plugin->rewriteAsSetter($expr->getLeftOperand(), 'baz', $expr);
64     $this->assertNull($rewritten);
65
66     /** @var \Pharborist\Operators\AssignNode $expr */
67     $expr = Parser::parseExpression('$node->nid = 30');
68     $rewritten = $this->plugin->rewriteAsSetter($expr->getLeftOperand(), 'nid', $expr);
69     $this->assertNull($rewritten);
70   }
71
72   public function testRewriteFieldLookup() {
73     /** @var \Pharborist\ArrayLookupNode $lookup */
74     $lookup = Parser::parseExpression('$node->field_foo[LANGUAGE_NONE][0]["value"]');
75     $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
76     $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
77     $this->assertEquals('$node->field_foo[0]->value', $rewritten->getText());
78
79     $lookup = Parser::parseExpression('$node->field_foo[\Drupal\Core\Language\Language::LANGCODE_NOT_SPECIFIED][0]["value"]');
80     $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
81     $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
82     $this->assertEquals('$node->field_foo[0]->value', $rewritten->getText());
83
84     $lookup = Parser::parseExpression('$node->field_foo["und"][0]["value"]');
85     $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
86     $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
87     $this->assertEquals('$node->field_foo[0]->value', $rewritten->getText());
88
89     $lookup = Parser::parseExpression('$node->field_foo["en"][0]["value"]');
90     $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
91     $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
92     $this->assertEquals('$node->getTranslation("en")->field_foo[0]->value', $rewritten->getText());
93
94     $lookup = Parser::parseExpression('$node->field_foo["und"][2]["wambooli"]');
95     $rewritten = GenericRewriter::rewriteFieldLookup($lookup);
96     $this->assertInstanceOf('\Pharborist\Objects\ObjectPropertyNode', $rewritten);
97     $this->assertEquals('$node->field_foo[2]->wambooli', $rewritten->getText());
98   }
99
100   public function testRewriteEmpty() {
101     $code = <<<'END'
102 function foo($baz) {
103   if (empty($baz->nid)) {
104   }
105 }
106 END;
107     /** @var \Pharborist\Functions\FunctionDeclarationNode $func */
108     $func = Parser::parseSnippet($code);
109     $this->plugin->rewrite($func->getParameterAtIndex(0));
110
111     $expected = <<<'END'
112 function foo($baz) {
113   if (!$baz->id()) {
114   }
115 }
116 END;
117     $this->assertEquals($expected, $func->getText());
118   }
119
120   public function testRewriteIsset() {
121     $code = <<<'END'
122 function foo($baz) {
123   if (isset($baz->title)) {
124   }
125 }
126 END;
127     /** @var \Pharborist\Functions\FunctionDeclarationNode $func */
128     $func = Parser::parseSnippet($code);
129     $this->plugin->rewrite($func->getParameterAtIndex(0));
130
131     $expected = <<<'END'
132 function foo($baz) {
133   if (!$baz->getTitle()) {
134   }
135 }
136 END;
137     $this->assertEquals($expected, $func->getText());
138   }
139
140 }