2727use Symfony \Bundle \MakerBundle \Maker \Common \CanGenerateTestsTrait ;
2828use Symfony \Bundle \MakerBundle \Renderer \FormTypeRenderer ;
2929use Symfony \Bundle \MakerBundle \Str ;
30- use Symfony \Bundle \MakerBundle \Util \UseStatementGenerator ;
30+ use Symfony \Bundle \MakerBundle \Util \ClassSource \ Model \ ClassData ;
3131use Symfony \Bundle \MakerBundle \Validator ;
3232use Symfony \Bundle \TwigBundle \TwigBundle ;
3333use Symfony \Component \Console \Command \Command ;
@@ -147,6 +147,21 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
147147 ++$ iter ;
148148 } while (class_exists ($ formClassDetails ->getFullName ()));
149149
150+ $ controllerClassData = ClassData::create (
151+ class: \sprintf ('Controller\%s ' , $ this ->controllerClassName ),
152+ suffix: 'Controller ' ,
153+ extendsClass: AbstractController::class,
154+ useStatements: [
155+ $ entityClassDetails ->getFullName (),
156+ $ formClassDetails ->getFullName (),
157+ $ repositoryClassName ,
158+ AbstractController::class,
159+ Request::class,
160+ Response::class,
161+ Route::class,
162+ ],
163+ );
164+
150165 $ entityVarPlural = lcfirst ($ this ->inflector ->pluralize ($ entityClassDetails ->getShortName ()));
151166 $ entityVarSingular = lcfirst ($ this ->inflector ->singularize ($ entityClassDetails ->getShortName ()));
152167
@@ -156,25 +171,15 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
156171 $ routeName = Str::asRouteName ($ controllerClassDetails ->getRelativeNameWithoutSuffix ());
157172 $ templatesPath = Str::asFilePath ($ controllerClassDetails ->getRelativeNameWithoutSuffix ());
158173
159- $ useStatements = new UseStatementGenerator ([
160- $ entityClassDetails ->getFullName (),
161- $ formClassDetails ->getFullName (),
162- $ repositoryClassName ,
163- AbstractController::class,
164- Request::class,
165- Response::class,
166- Route::class,
167- ]);
168-
169174 if (EntityManagerInterface::class !== $ repositoryClassName ) {
170- $ useStatements ->addUseStatement (EntityManagerInterface::class);
175+ $ controllerClassData ->addUseStatement (EntityManagerInterface::class);
171176 }
172177
173178 $ generator ->generateController (
174- $ controllerClassDetails -> getFullName (),
179+ $ controllerClassData -> getFullClassName (),
175180 'crud/controller/Controller.tpl.php ' ,
176181 array_merge ([
177- 'use_statements ' => $ useStatements ,
182+ 'class_data ' => $ controllerClassData ,
178183 'entity_class_name ' => $ entityClassDetails ->getShortName (),
179184 'form_class_name ' => $ formClassDetails ->getShortName (),
180185 'route_path ' => Str::asRoutePath ($ controllerClassDetails ->getRelativeNameWithoutSuffix ()),
@@ -242,37 +247,33 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
242247 }
243248
244249 if ($ this ->shouldGenerateTests ()) {
245- $ testClassDetails = $ generator ->createClassNameDetails (
246- $ entityClassDetails ->getRelativeNameWithoutSuffix (),
247- 'Test \\Controller \\' ,
248- 'ControllerTest '
250+ $ testClassData = ClassData::create (
251+ class: \sprintf ('Tests\Controller\%s ' , $ entityClassDetails ->getRelativeNameWithoutSuffix ()),
252+ suffix: 'ControllerTest ' ,
253+ extendsClass: WebTestCase::class,
254+ useStatements: [
255+ $ entityClassDetails ->getFullName (),
256+ WebTestCase::class,
257+ KernelBrowser::class,
258+ $ repositoryClassName ,
259+ EntityRepository::class,
260+ ],
249261 );
250262
251- $ useStatements = new UseStatementGenerator ([
252- $ entityClassDetails ->getFullName (),
253- WebTestCase::class,
254- KernelBrowser::class,
255- $ repositoryClassName ,
256- ]);
257-
258- $ useStatements ->addUseStatement (EntityRepository::class);
259-
260263 if (EntityManagerInterface::class !== $ repositoryClassName ) {
261- $ useStatements ->addUseStatement (EntityManagerInterface::class);
264+ $ testClassData ->addUseStatement (EntityManagerInterface::class);
262265 }
263266
264- $ generator ->generateFile (
265- ' tests/Controller/ ' . $ testClassDetails -> getShortName (). ' .php ' ,
267+ $ generator ->generateClass (
268+ $ testClassData -> getFullClassName () ,
266269 'crud/test/Test.EntityManager.tpl.php ' ,
267270 [
268- 'use_statements ' => $ useStatements ,
271+ 'class_data ' => $ testClassData ,
269272 'entity_full_class_name ' => $ entityClassDetails ->getFullName (),
270273 'entity_class_name ' => $ entityClassDetails ->getShortName (),
271274 'entity_var_singular ' => $ entityVarSingular ,
272275 'route_path ' => Str::asRoutePath ($ controllerClassDetails ->getRelativeNameWithoutSuffix ()),
273276 'route_name ' => $ routeName ,
274- 'class_name ' => Str::getShortClassName ($ testClassDetails ->getFullName ()),
275- 'namespace ' => Str::getNamespace ($ testClassDetails ->getFullName ()),
276277 'form_fields ' => $ entityDoctrineDetails ->getFormFields (),
277278 'repository_class_name ' => EntityManagerInterface::class,
278279 'form_field_prefix ' => strtolower (Str::asSnakeCase ($ entityTwigVarSingular )),
0 commit comments