From 709a8438f2d4ee3fa579661485341a84b9fbbc7d Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Tue, 17 Oct 2017 23:36:50 +0800 Subject: [PATCH] Add test for controller content for namespaced model --- src/CrudMake.php | 2 +- tests/Generators/ControllerGeneratorTest.php | 98 ++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 1 deletion(-) diff --git a/src/CrudMake.php b/src/CrudMake.php index 49f72d3..021b10e 100644 --- a/src/CrudMake.php +++ b/src/CrudMake.php @@ -256,7 +256,7 @@ class CrudMake extends Command $this->getModelFactoryContent() ); - $this->info($this->modelNames['lang_name'].' model factory generated.'); + $this->info($this->modelNames['model_name'].' model factory generated.'); } /** diff --git a/tests/Generators/ControllerGeneratorTest.php b/tests/Generators/ControllerGeneratorTest.php index d3069f4..a068b44 100644 --- a/tests/Generators/ControllerGeneratorTest.php +++ b/tests/Generators/ControllerGeneratorTest.php @@ -103,4 +103,102 @@ class {$this->plural_model_name}Controller extends Controller "; $this->assertEquals($ctrlClassContent, file_get_contents(app_path("Http/Controllers/{$this->plural_model_name}Controller.php"))); } + + /** @test */ + public function it_creates_correct_controller_class_content_for_namespaced_model() + { + $this->artisan('make:crud', ['name' => 'Entities/References/Category', '--no-interaction' => true]); + + $this->assertFileExists(app_path("Http/Controllers/CategoriesController.php")); + $ctrlClassContent = "where('name', 'like', '%'.request('q').'%'); + })->paginate(25); + + if (in_array(request('action'), ['edit', 'delete']) && request('id') != null) { + \$editableCategory = Category::find(request('id')); + } + + return view('categories.index', compact('categories', 'editableCategory')); + } + + /** + * Store a newly created category in storage. + * + * @param \Illuminate\Http\Request \$request + * @return \Illuminate\Http\Response + */ + public function store(Request \$request) + { + \$this->validate(\$request, [ + 'name' => 'required|max:60', + 'description' => 'nullable|max:255', + ]); + + Category::create(\$request->only('name', 'description')); + + return redirect()->route('categories.index'); + } + + /** + * Update the specified category in storage. + * + * @param \Illuminate\Http\Request \$request + * @param \App\Entities\References\Category \$category + * @return \Illuminate\Http\Response + */ + public function update(Request \$request, Category \$category) + { + \$this->validate(\$request, [ + 'name' => 'required|max:60', + 'description' => 'nullable|max:255', + ]); + + \$routeParam = request()->only('page', 'q'); + + \$category = \$category->update(\$request->only('name', 'description')); + + return redirect()->route('categories.index', \$routeParam); + } + + /** + * Remove the specified category from storage. + * + * @param \App\Entities\References\Category \$category + * @return \Illuminate\Http\Response + */ + public function destroy(Category \$category) + { + \$this->validate(request(), [ + 'category_id' => 'required', + ]); + + \$routeParam = request()->only('page', 'q'); + + if (request('category_id') == \$category->id && \$category->delete()) { + return redirect()->route('categories.index', \$routeParam); + } + + return back(); + } +} +"; + $this->assertEquals($ctrlClassContent, file_get_contents(app_path("Http/Controllers/CategoriesController.php"))); + } }