Task 9 - Filter users

This commit is contained in:
PovilasKorop
2021-11-22 12:05:31 +02:00
parent a114584904
commit 4a2753c7e8
5 changed files with 39 additions and 0 deletions
+8
View File
@@ -91,3 +91,11 @@ Test method `test_belongstomany_add()`.
---
## Task 9. Filter BelongsToMany Rows
In the route `/users`, the list should show only the users with at least one project. Fix the Controller to add this filter.
Test method `test_filter_users()`.
---
+7
View File
@@ -6,6 +6,13 @@ use App\Models\User;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view('users.index', compact('users'));
}
public function show(User $user)
{
return view('users.show', compact('user'));
+5
View File
@@ -0,0 +1,5 @@
<ul>
@foreach ($users as $user)
<li>{{ $user->name }} ({{ $user->email }})</li>
@endforeach
</ul>
+2
View File
@@ -21,6 +21,7 @@ Route::get('/', function () {
Route::get('tasks', [TaskController::class, 'index']);
Route::post('tasks', [TaskController::class, 'store'])->middleware('auth');
Route::get('users', [\App\Http\Controllers\UserController::class, 'index']);
Route::get('users/{user}', [\App\Http\Controllers\UserController::class, 'show']);
Route::get('roles', [\App\Http\Controllers\RoleController::class, 'index']);
@@ -32,3 +33,4 @@ Route::get('countries', [\App\Http\Controllers\CountryController::class, 'index'
Route::get('attachments', [\App\Http\Controllers\AttachmentController::class, 'index']);
Route::post('projects', [\App\Http\Controllers\ProjectController::class, 'store'])->middleware('auth');
+17
View File
@@ -153,4 +153,21 @@ class RelationshipsTest extends TestCase
'start_date' => now()->toDateString()
]);
}
// TASK: show only the users who have at least one project
public function test_filter_users()
{
$user1 = User::factory()->create();
$user2 = User::factory()->create();
$project = Project::create(['name' => 'Some project']);
DB::table('project_user')->insert([
'project_id' => $project->id,
'user_id' => $user1->id,
'start_date' => now()->toDateString()
]);
$response = $this->get('/users');
$response->assertSee($user1->email);
$response->assertDontSee($user2->email);
}
}