forked from hechoendrupal/drupal-console
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPluginBlockGeneratorTest.php
More file actions
119 lines (102 loc) · 3.28 KB
/
Copy pathPluginBlockGeneratorTest.php
File metadata and controls
119 lines (102 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
/**
* @file
* Contains Drupal\AppConsole\Test\Generator\PluginBlockGeneratorTest.
*/
namespace Drupal\AppConsole\Test\Generator;
class PluginBlockGeneratorTest extends GeneratorTest
{
/**
* @dataProvider commandData
*/
public function testGeneratePluginBlock($parameters)
{
$this->setUpTemporalDirectory();
// Get parameters
list($module, $class_name, $label, $plugin_id, $services, $inputs) = $parameters;
// Get generator
$generator = $this->getGenerator();
$dir_module = $this->dir . '/' . $module;
// Set plugin path.
$generator->expects($this->once())
->method('getPluginPath')
->will($this->returnValue(
$dir_module . '/src/Plugin/Block')
);
// Generate plugin block
$generator->generate($module, $class_name, $label, $plugin_id, $services, $inputs);
$this->assertTrue(
file_exists($dir_module . '/src/Plugin/Block/' . $class_name . '.php'),
sprintf('%s has been generated', $dir_module . '/src/Plugin/Block/' . $class_name . '.php')
);
$contains = [
'build',
'@Block',
'id',
'label',
$class_name . ' extends BlockBase',
];
if ($inputs) {
$contains += [
'blockForm()',
'blockForm($form, FormStateInterface $form_state)',
'blockSubmit()',
'blockSubmit($form, FormStateInterface $form_state)',
];
}
if ($services) {
$contains += [
'__construct()',
'create()',
'create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition)',
'implements ContainerFactoryPluginInterface',
];
}
$content = file_get_contents($dir_module . '/src/Plugin/Block/' . $class_name . '.php');
foreach ($contains as $contain) {
$this->assertContains($contain, $content);
}
}
public function commandData()
{
$services = [
'twig' => [
'name' => 'twig',
'machine_name' => 'twig',
'class' => 'Twig_Environment',
'short' => 'Twig_Environment',
]
];
$inputs = [
[
'name' => 'foo',
'type' => 'textfield',
'label' => 'Foo',
'options' => 'foo',
'description' => 'Foo',
]
];
return [
[
['plugin_block' . rand(), 'FooBlock', 'Foo Block', 'foo_block', null, []]
],
[
['plugin_block' . rand(), 'FooBlock', 'Foo Block', 'foo_block', $services, []]
],
[
['plugin_block' . rand(), 'FooBlock', 'Foo Block', 'foo_block', null, $inputs]
],
[
['plugin_block' . rand(), 'FooBlock', 'Foo Block', 'foo_block', $services, $inputs]
],
];
}
protected function getGenerator()
{
$generator = $this->getMockBuilder('\Drupal\AppConsole\Generator\PluginBlockGenerator')
->setMethods(['getPluginPath'])
->getMock();
$generator->setSkeletonDirs($this->getSkeletonDirs());
return $generator;
}
}