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%2FFixer%2FFormCallbackToMethodTest.php;fp=web%2Fmodules%2Fcontrib%2Fdrupalmoduleupgrader%2Ftests%2Fsrc%2FUnit%2FPlugin%2FDMU%2FFixer%2FFormCallbackToMethodTest.php;h=b205e7eb8064a14de9a197b59b0d875bea5bfb2c;hp=0000000000000000000000000000000000000000;hb=8acec36f19c470dfcda1ae2336826a782f41874c;hpb=e0411c4e83ba0d079034db83c3f7f55be24a0e35 diff --git a/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Plugin/DMU/Fixer/FormCallbackToMethodTest.php b/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Plugin/DMU/Fixer/FormCallbackToMethodTest.php new file mode 100644 index 000000000..b205e7eb8 --- /dev/null +++ b/web/modules/contrib/drupalmoduleupgrader/tests/src/Unit/Plugin/DMU/Fixer/FormCallbackToMethodTest.php @@ -0,0 +1,68 @@ +getMock('\Drupal\drupalmoduleupgrader\IndexerInterface'); + $function_indexer->method('get')->with('foo_submit')->willReturn(new NodeCollection([ $callback ])); + + $class = ClassNode::create('FooForm'); + $class_indexer = $this->getMock('\Drupal\drupalmoduleupgrader\IndexerInterface'); + $class_indexer->method('get')->with('FooForm')->willReturn(new NodeCollection([ $class ])); + + $this + ->container + ->get('plugin.manager.drupalmoduleupgrader.indexer') + ->method('createInstance') + ->willReturnCallback(function($which) use ($class_indexer, $function_indexer) { + switch ($which) { + case 'class': + return $class_indexer; + case 'function': + return $function_indexer; + default: + break; + } + }); + + $config = [ + 'callback' => 'foo_submit', + 'destination' => 'FooForm::submitForm', + ]; + $plugin = new FormCallbackToMethod($config, uniqID(), []); + $plugin->setTarget($this->target); + try { + // We expect a CodeManagerIOException because we're implementing the + // method on a class that is not officially part of the target's code. + // That's OK, though. + $plugin->execute(); + } + catch (IOException $e) {} + + $this->assertTrue($class->hasMethod('submitForm')); + $parameters = $class->getMethod('submitForm')->getParameters(); + $this->assertCount(2, $parameters); + $this->assertEquals('form', $parameters[0]->getName()); + $this->assertInstanceOf('\Pharborist\TokenNode', $parameters[0]->getTypeHint()); + $this->assertSame(T_ARRAY, $parameters[0]->getTypeHint()->getType()); + $this->assertInstanceOf('\Pharborist\TokenNode', $parameters[0]->getReference()); + $this->assertEquals('form_state', $parameters[1]->getName()); + $this->assertInstanceOf('\Pharborist\Namespaces\NameNode', $parameters[1]->getTypeHint()); + $this->assertEquals('Drupal\Core\Form\FormStateInterface', $parameters[1]->getTypeHint()->getText()); + $this->assertNull($parameters[1]->getReference()); + } + +}