Skip to content

Commit 5efa6e1

Browse files
committed
Changing make:stimulus-controller to require StimulusBundle
1 parent 4bd4868 commit 5efa6e1

12 files changed

+72
-46
lines changed

src/Maker/MakeStimulusController.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Symfony\Component\Console\Input\InputArgument;
2121
use Symfony\Component\Console\Input\InputInterface;
2222
use Symfony\Component\Console\Question\Question;
23+
use Symfony\UX\StimulusBundle\StimulusBundle;
2324
use Symfony\WebpackEncoreBundle\WebpackEncoreBundle;
2425

2526
/**
@@ -227,9 +228,20 @@ private function getValuesTypes(): array
227228

228229
public function configureDependencies(DependencyBuilder $dependencies): void
229230
{
231+
// lower than 8.1, allow WebpackEncoreBundle
232+
if (\PHP_VERSION_ID < 80100) {
233+
$dependencies->addClassDependency(
234+
WebpackEncoreBundle::class,
235+
'symfony/webpack-encore-bundle'
236+
);
237+
238+
return;
239+
}
240+
241+
// else: encourage StimulusBundle by requiring it
230242
$dependencies->addClassDependency(
231-
WebpackEncoreBundle::class,
232-
'webpack-encore-bundle'
243+
StimulusBundle::class,
244+
'symfony/stimulus-bundle'
233245
);
234246
}
235247
}

src/Maker/MakeTwigComponent.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,15 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
6464
$factory = $generator->createClassNameDetails(
6565
$name,
6666
'Twig\\Components',
67-
'Component'
6867
);
6968

70-
$shortName = Str::asSnakeCase(Str::removeSuffix($factory->getShortName(), 'Component'));
69+
$shortName = Str::getShortClassName($factory->getShortName());
7170

7271
$generator->generateClass(
7372
$factory->getFullName(),
7473
sprintf('%s/../Resources/skeleton/twig/%s', __DIR__, $live ? 'LiveComponent.tpl.php' : 'Component.tpl.php'),
7574
[
7675
'live' => $live,
77-
'short_name' => $shortName,
7876
]
7977
);
8078
$generator->generateTemplate(

src/Resources/skeleton/twig/Component.tpl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Symfony\UX\TwigComponent\Attribute\AsTwigComponent;
66

7-
#[AsTwigComponent('<?= $short_name; ?>')]
7+
#[AsTwigComponent()]
88
final class <?= $class_name."\n" ?>
99
{
1010
}

src/Resources/skeleton/twig/LiveComponent.tpl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Symfony\UX\LiveComponent\Attribute\AsLiveComponent;
66
use Symfony\UX\LiveComponent\DefaultActionTrait;
77

8-
#[AsLiveComponent('<?= $short_name; ?>')]
8+
#[AsLiveComponent()]
99
final class <?= $class_name."\n" ?>
1010
{
1111
use DefaultActionTrait;

src/Test/MakerTestCase.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ protected function executeMakerCommand(MakerTestDetails $testDetails)
5454
$this->markTestSkipped();
5555
}
5656

57+
if ($testDetails->skipOnWindows() && '\\' === \DIRECTORY_SEPARATOR) {
58+
$this->markTestSkipped('This test is not supported on Windows');
59+
}
60+
5761
$testEnv = MakerTestEnvironment::create($testDetails);
5862

5963
// prepare environment to test

src/Test/MakerTestDetails.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ final class MakerTestDetails
2424
private array $requiredPackageVersions = [];
2525
private int $blockedPhpVersionUpper = 0;
2626
private int $blockedPhpVersionLower = 0;
27+
private bool $skipOnWindows = false;
2728

2829
public function __construct(
2930
private MakerInterface $maker,
@@ -175,4 +176,11 @@ public function getPreRunCallbacks(): array
175176
{
176177
return $this->preRunCallbacks;
177178
}
179+
180+
public function skipOnWindows(): self
181+
{
182+
$this->skipOnWindows = true;
183+
184+
return $this;
185+
}
178186
}

tests/Maker/MakeControllerTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ public function getTestDetails(): \Generator
7575

7676
// make sure the template was not configured
7777
$this->assertContainsCount('created: ', $output, 1);
78-
$this->assertStringContainsString('created: src/Controller/FooNoTemplateController.php', $output);
79-
$this->assertStringNotContainsString('created: templates/foo_no_template/index.html.twig', $output);
78+
$this->assertStringContainsString('src/Controller/FooNoTemplateController.php', $output);
79+
$this->assertStringNotContainsString('templates/foo_no_template/index.html.twig', $output);
8080
}),
8181
];
8282

@@ -88,7 +88,7 @@ public function getTestDetails(): \Generator
8888
]);
8989

9090
$this->assertFileExists($runner->getPath('src/Controller/Admin/FooBarController.php'));
91-
$this->assertStringContainsString('created: src/Controller/Admin/FooBarController.php', $output);
91+
$this->assertStringContainsString('src/Controller/Admin/FooBarController.php', $output);
9292
}),
9393
];
9494

@@ -112,8 +112,8 @@ public function getTestDetails(): \Generator
112112
'\App\Foo\Bar\CoolController',
113113
]);
114114

115-
$this->assertStringContainsString('created: src/Foo/Bar/CoolController.php', $output);
116-
$this->assertStringContainsString('created: templates/foo/bar/cool/index.html.twig', $output);
115+
$this->assertStringContainsString('src/Foo/Bar/CoolController.php', $output);
116+
$this->assertStringContainsString('templates/foo/bar/cool/index.html.twig', $output);
117117
}),
118118
];
119119
}

tests/Maker/MakeCrudTest.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public function getTestDetails(): \Generator
3838
'n', // Generate Tests
3939
]);
4040

41-
$this->assertStringContainsString('created: src/Controller/SweetFoodController.php', $output);
42-
$this->assertStringContainsString('created: src/Form/SweetFoodType.php', $output);
41+
$this->assertStringContainsString('src/Controller/SweetFoodController.php', $output);
42+
$this->assertStringContainsString('src/Form/SweetFoodType.php', $output);
4343

4444
$this->runCrudTest($runner, 'it_generates_basic_crud.php');
4545
}),
@@ -58,8 +58,8 @@ public function getTestDetails(): \Generator
5858
'y', // Generate Tests
5959
]);
6060

61-
$this->assertStringContainsString('created: src/Controller/SweetFoodAdminController.php', $output);
62-
$this->assertStringContainsString('created: src/Form/SweetFoodType.php', $output);
61+
$this->assertStringContainsString('src/Controller/SweetFoodAdminController.php', $output);
62+
$this->assertStringContainsString('src/Form/SweetFoodType.php', $output);
6363

6464
$this->runCrudTest($runner, 'it_generates_crud_with_custom_controller.php');
6565
}),
@@ -79,9 +79,9 @@ public function getTestDetails(): \Generator
7979
'y', // Generate Tests
8080
]);
8181

82-
$this->assertStringContainsString('created: src/Controller/SweetFoodController.php', $output);
83-
$this->assertStringContainsString('created: src/Form/SweetFoodType.php', $output);
84-
$this->assertStringContainsString('created: tests/Controller/SweetFoodControllerTest.php', $output);
82+
$this->assertStringContainsString('src/Controller/SweetFoodController.php', $output);
83+
$this->assertStringContainsString('src/Form/SweetFoodType.php', $output);
84+
$this->assertStringContainsString('tests/Controller/SweetFoodControllerTest.php', $output);
8585

8686
$this->runCrudTest($runner, 'it_generates_basic_crud.php');
8787
}),
@@ -106,9 +106,9 @@ public function getTestDetails(): \Generator
106106
'y', // Generate Tests
107107
]);
108108

109-
$this->assertStringContainsString('created: src/Controller/SweetFoodController.php', $output);
110-
$this->assertStringContainsString('created: src/Form/SweetFoodType.php', $output);
111-
$this->assertStringContainsString('created: tests/Controller/SweetFoodControllerTest.php', $output);
109+
$this->assertStringContainsString('src/Controller/SweetFoodController.php', $output);
110+
$this->assertStringContainsString('src/Form/SweetFoodType.php', $output);
111+
$this->assertStringContainsString('tests/Controller/SweetFoodControllerTest.php', $output);
112112

113113
$this->runCrudTest($runner, 'it_generates_basic_crud.php');
114114
}),
@@ -147,8 +147,8 @@ public function getTestDetails(): \Generator
147147
'n', // Generate Tests
148148
]);
149149

150-
$this->assertStringContainsString('created: src/Controller/SweetFoodController.php', $output);
151-
$this->assertStringContainsString('created: src/Form/SweetFoodType.php', $output);
150+
$this->assertStringContainsString('src/Controller/SweetFoodController.php', $output);
151+
$this->assertStringContainsString('src/Form/SweetFoodType.php', $output);
152152

153153
$this->runCrudTest($runner, 'it_generates_crud_with_custom_root_namespace.php');
154154
}),
@@ -171,8 +171,8 @@ public function getTestDetails(): \Generator
171171
'n', // Generate Tests
172172
]);
173173

174-
$this->assertStringContainsString('created: src/Controller/SweetFoodController.php', $output);
175-
$this->assertStringContainsString('created: src/Form/SweetFoodType.php', $output);
174+
$this->assertStringContainsString('src/Controller/SweetFoodController.php', $output);
175+
$this->assertStringContainsString('src/Form/SweetFoodType.php', $output);
176176

177177
$this->runCrudTest($runner, 'it_generates_basic_crud.php');
178178

@@ -198,8 +198,8 @@ public function getTestDetails(): \Generator
198198
'n', // Generate Tests
199199
]);
200200

201-
$this->assertStringContainsString('created: src/Controller/SweetFoodController.php', $output);
202-
$this->assertStringContainsString('created: src/Form/SweetFoodType.php', $output);
201+
$this->assertStringContainsString('src/Controller/SweetFoodController.php', $output);
202+
$this->assertStringContainsString('src/Form/SweetFoodType.php', $output);
203203

204204
$this->runCrudTest($runner, 'it_generates_basic_crud.php');
205205
}),

tests/Maker/MakeEntityTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ public function getTestDetails(): \Generator
331331
'',
332332
]);
333333

334-
$this->assertStringContainsString('updated: src/Entity/User.php', $output);
334+
$this->assertStringContainsString('src/Entity/User.php', $output);
335335
$this->assertStringNotContainsString('updated: vendor/', $output);
336336

337337
// sanity checks on the generated code

tests/Maker/MakeFixturesTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public function getTestDetails()
3030
'FooFixtures',
3131
]);
3232

33-
$this->assertStringContainsString('created: src/DataFixtures/FooFixtures.php', $output);
33+
$this->assertStringContainsString('src/DataFixtures/FooFixtures.php', $output);
3434
}),
3535
];
3636
}

tests/Maker/MakeTwigComponentTest.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ public function getTestDetails(): \Generator
2424
->run(function (MakerTestRunner $runner) {
2525
$output = $runner->runMaker(['Alert']);
2626

27-
$this->assertStringContainsString('created: src/Twig/Components/AlertComponent.php', $output);
28-
$this->assertStringContainsString('created: templates/components/alert.html.twig', $output);
29-
$this->assertStringContainsString("To render the component, use {{ component('alert') }}.", $output);
27+
$this->assertStringContainsString('src/Twig/Components/Alert.php', $output);
28+
$this->assertStringContainsString('templates/components/Alert.html.twig', $output);
29+
$this->assertStringContainsString("To render the component, use {{ component('Alert') }}.", $output);
3030

3131
$runner->copy(
3232
'make-twig-component/tests/it_generates_twig_component.php',
3333
'tests/GeneratedTwigComponentTest.php'
3434
);
35-
$runner->replaceInFile('tests/GeneratedTwigComponentTest.php', '{name}', 'alert');
35+
$runner->replaceInFile('tests/GeneratedTwigComponentTest.php', '{name}', 'Alert');
3636
$runner->runTests();
3737
}),
3838
];
@@ -42,15 +42,15 @@ public function getTestDetails(): \Generator
4242
->run(function (MakerTestRunner $runner) {
4343
$output = $runner->runMaker(['FormInput']);
4444

45-
$this->assertStringContainsString('created: src/Twig/Components/FormInputComponent.php', $output);
46-
$this->assertStringContainsString('created: templates/components/form_input.html.twig', $output);
47-
$this->assertStringContainsString("To render the component, use {{ component('form_input') }}.", $output);
45+
$this->assertStringContainsString('src/Twig/Components/FormInput.php', $output);
46+
$this->assertStringContainsString('templates/components/FormInput.html.twig', $output);
47+
$this->assertStringContainsString("To render the component, use {{ component('FormInput') }}.", $output);
4848

4949
$runner->copy(
5050
'make-twig-component/tests/it_generates_twig_component.php',
5151
'tests/GeneratedTwigComponentTest.php'
5252
);
53-
$runner->replaceInFile('tests/GeneratedTwigComponentTest.php', '{name}', 'form_input');
53+
$runner->replaceInFile('tests/GeneratedTwigComponentTest.php', '{name}', 'FormInput');
5454
$runner->runTests();
5555
}),
5656
];
@@ -60,15 +60,15 @@ public function getTestDetails(): \Generator
6060
->run(function (MakerTestRunner $runner) {
6161
$output = $runner->runMaker(['Alert']);
6262

63-
$this->assertStringContainsString('created: src/Twig/Components/AlertComponent.php', $output);
64-
$this->assertStringContainsString('created: templates/components/alert.html.twig', $output);
65-
$this->assertStringContainsString("To render the component, use {{ component('alert') }}.", $output);
63+
$this->assertStringContainsString('src/Twig/Components/Alert.php', $output);
64+
$this->assertStringContainsString('templates/components/Alert.html.twig', $output);
65+
$this->assertStringContainsString("To render the component, use {{ component('Alert') }}.", $output);
6666

6767
$runner->copy(
6868
'make-twig-component/tests/it_generates_live_component.php',
6969
'tests/GeneratedLiveComponentTest.php'
7070
);
71-
$runner->replaceInFile('tests/GeneratedLiveComponentTest.php', '{name}', 'alert');
71+
$runner->replaceInFile('tests/GeneratedLiveComponentTest.php', '{name}', 'Alert');
7272
$runner->runTests();
7373
}),
7474
];
@@ -78,15 +78,15 @@ public function getTestDetails(): \Generator
7878
->run(function (MakerTestRunner $runner) {
7979
$output = $runner->runMaker(['FormInput']);
8080

81-
$this->assertStringContainsString('created: src/Twig/Components/FormInputComponent.php', $output);
82-
$this->assertStringContainsString('created: templates/components/form_input.html.twig', $output);
83-
$this->assertStringContainsString("To render the component, use {{ component('form_input') }}.", $output);
81+
$this->assertStringContainsString('src/Twig/Components/FormInput.php', $output);
82+
$this->assertStringContainsString('templates/components/FormInput.html.twig', $output);
83+
$this->assertStringContainsString("To render the component, use {{ component('FormInput') }}.", $output);
8484

8585
$runner->copy(
8686
'make-twig-component/tests/it_generates_live_component.php',
8787
'tests/GeneratedLiveComponentTest.php'
8888
);
89-
$runner->replaceInFile('tests/GeneratedLiveComponentTest.php', '{name}', 'form_input');
89+
$runner->replaceInFile('tests/GeneratedLiveComponentTest.php', '{name}', 'FormInput');
9090
$runner->runTests();
9191
}),
9292
];

tests/Maker/TemplateLinterTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ public function getTestDetails(): \Generator
3434
{
3535
yield 'lints_templates_with_custom_php_cs_fixer_and_config' => [$this->createMakerTest()
3636
->addExtraDependencies('friendsofphp/php-cs-fixer')
37+
// these tests are troublesome on Windows
38+
->skipOnWindows()
3739
->run(function (MakerTestRunner $runner) {
3840
$runner->copy('template-linter/php-cs-fixer.test.php', 'php-cs-fixer.test.php');
3941

@@ -60,6 +62,8 @@ public function getTestDetails(): \Generator
6062

6163
yield 'lints_templates_with_flex_generated_config_file' => [$this->createMakerTest()
6264
->addExtraDependencies('friendsofphp/php-cs-fixer')
65+
// these tests are troublesome on Windows
66+
->skipOnWindows()
6367
->run(function (MakerTestRunner $runner) {
6468
$runner->replaceInFile(
6569
'.php-cs-fixer.dist.php',

0 commit comments

Comments
 (0)