From b39af5b84434d216951df68ebfd45e7f1613f1d8 Mon Sep 17 00:00:00 2001 From: PovilasKorop Date: Tue, 16 Nov 2021 09:58:36 +0200 Subject: [PATCH] Task 6 - mass update --- app/Http/Controllers/ProjectController.php | 12 ++++++++++++ routes/web.php | 4 ++++ tests/Feature/EloquentTest.php | 16 ++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 53782b6..29b1415 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -16,4 +16,16 @@ class ProjectController extends Controller return redirect('/')->with('success', 'Project created'); } + + public function mass_update(Request $request) + { + // TASK: Transform this SQL query into Eloquent + // update projects + // set name = $request->new_name + // where name = $request->old_name + + // Insert Eloquent statement below + + return redirect('/')->with('success', 'Projects updated'); + } } diff --git a/routes/web.php b/routes/web.php index 9a5a0c4..738dd5e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -19,8 +19,12 @@ Route::get('/', function () { return view('welcome'); }); +// NOTICE: Not all the routes are logical and would exist in a real Laravel project +// Some routes are just for the purpose of replicating some testing scenario + Route::get('users', [UserController::class, 'index']); Route::get('users/{userId}', [UserController::class, 'show']); Route::get('users/check/{name}/{email}', [UserController::class, 'check_create']); Route::post('projects', [ProjectController::class, 'store']); +Route::post('projects/mass_update', [ProjectController::class, 'mass_update']); diff --git a/tests/Feature/EloquentTest.php b/tests/Feature/EloquentTest.php index 80bcef8..7a867c0 100644 --- a/tests/Feature/EloquentTest.php +++ b/tests/Feature/EloquentTest.php @@ -4,6 +4,7 @@ namespace Tests\Feature; use App\Models\Morningnews; use App\Models\News; +use App\Models\Project; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; use Tests\TestCase; @@ -74,4 +75,19 @@ class EloquentTest extends TestCase $response->assertRedirect(); } + public function test_mass_update_projects() { + $project = new Project(); + $project->name = 'Old name'; + $project->save(); + + $this->assertDatabaseHas('projects', ['name' => 'Old name']); + + $response = $this->post('projects/mass_update', [ + 'old_name' => 'Old name', + 'new_name' => 'New name' + ]); + $response->assertRedirect(); + $this->assertDatabaseMissing('projects', ['name' => 'Old name']); + $this->assertDatabaseHas('projects', ['name' => 'New name']); + } }