4141 assertCanBanUsers ();
4242});
4343
44+ test ('admins can ban a user and delete their threads ' , function () {
45+ $ this ->loginAsAdmin ();
46+
47+ assertCanBanUsersAndDeleteThreads ();
48+ });
49+
4450test ('moderators can ban a user ' , function () {
4551 $ this ->loginAsModerator ();
4652
4753 assertCanBanUsers ();
4854});
4955
56+ test ('moderators can ban a user and delete their threads ' , function () {
57+ $ this ->loginAsModerator ();
58+
59+ assertCanBanUsersAndDeleteThreads ();
60+ });
61+
5062test ('admins can unban a user ' , function () {
5163 $ this ->loginAsAdmin ();
5264
@@ -366,11 +378,23 @@ function assertCanBanUsers()
366378{
367379 $ user = User::factory ()->create (['name ' => 'Freek Murze ' ]);
368380
369- test ()->put ('/admin/users/ ' .$ user ->username ().'/ban ' , ['reason ' => 'A good reason ' ])
381+ test ()->put ('/admin/users/ ' .$ user ->username ().'/ban ' , ['reason ' => 'A good reason ' , 'delete_threads ' => false ])
382+ ->assertRedirect ('/user/ ' .$ user ->username ());
383+
384+ test ()->assertDatabaseMissing ('users ' , ['id ' => $ user ->id (), 'banned_at ' => null ]);
385+ test ()->assertDatabaseHas ('users ' , ['id ' => $ user ->id (), 'banned_reason ' => 'A good reason ' ]);
386+ }
387+
388+ function assertCanBanUsersAndDeleteThreads ()
389+ {
390+ $ user = User::factory ()->create (['name ' => 'Freek Murze ' ]);
391+
392+ test ()->put ('/admin/users/ ' .$ user ->username ().'/ban ' , ['reason ' => 'A good reason ' , 'delete_threads ' => true ])
370393 ->assertRedirect ('/user/ ' .$ user ->username ());
371394
372395 test ()->assertDatabaseMissing ('users ' , ['id ' => $ user ->id (), 'banned_at ' => null ]);
373396 test ()->assertDatabaseHas ('users ' , ['id ' => $ user ->id (), 'banned_reason ' => 'A good reason ' ]);
397+ test ()->assertDatabaseMissing ('threads ' , ['author_id ' => $ user ->id ()]);
374398}
375399
376400function assertCanUnbanUsers ()
@@ -397,6 +421,6 @@ function assertCannotBanUsersByType(int $type)
397421{
398422 $ user = User::factory ()->create (['type ' => $ type ]);
399423
400- test ()->put ('/admin/users/ ' .$ user ->username ().'/ban ' , ['reason ' => 'A good reason ' ])
424+ test ()->put ('/admin/users/ ' .$ user ->username ().'/ban ' , ['reason ' => 'A good reason ' , ' delete_threads ' => fake ()-> boolean () ])
401425 ->assertForbidden ();
402426}
0 commit comments