From 5a96a1008436026a7b6f8a6058949c3825bfa1fe Mon Sep 17 00:00:00 2001 From: faissaloux Date: Thu, 28 Jul 2022 15:58:10 +0100 Subject: [PATCH 1/5] block users feature tests --- tests/Feature/BlockUsersTest.php | 65 ++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tests/Feature/BlockUsersTest.php diff --git a/tests/Feature/BlockUsersTest.php b/tests/Feature/BlockUsersTest.php new file mode 100644 index 000000000..a353996b7 --- /dev/null +++ b/tests/Feature/BlockUsersTest.php @@ -0,0 +1,65 @@ +createUser(); + + $this->put("/users/{$user->username}/block")->assertRedirectedTo('login'); +}); + +test('cannot unblock user when not logged in', function () { + $user = $this->createUser(); + + $this->put("/users/{$user->username}/unblockblock")->assertRedirectedTo('login'); +}); + +test('cannot block self', function () { + $user = $this->createUser(); + + $this->loginAs($user); + + $this->put("/users/{$user->username}/block")->assertForbidden(); +}); + +test('cannot block moderator', function () { + $user = $this->createUser(); + $moderator = $this->createUser([ + 'username' => 'moderator', + 'email' => 'moderator@example.com', + 'type' => User::MODERATOR + ]); + + $this->loginAs($user); + + $this->put("/users/{$moderator->username}/block")->assertForbidden(); +}); + +test('can block other user', function () { + $blocker = $this->createUser(); + $blocked = $this->createUser([ + 'username' => 'blocked', + 'email' => 'blocked@example.com', + ]); + + $this->loginAs($blocker); + + $this->put("/users/{$blocked->username}/block")->assertSessionHas('success', trans('settings.user.blocked')); +}); + +test('can unblock other user', function () { + $unblocker = $this->createUser(); + $unblocked = $this->createUser([ + 'username' => 'unblocked', + 'email' => 'unblocked@example.com', + ]); + + $this->loginAs($unblocker); + + $this->put("/users/{$unblocked->username}/unblockblock")->assertSessionHas('success', trans('settings.user.unblocked')); +}); From 173b37d72e0ec15d10eb3b9c56ed5cd48345111f Mon Sep 17 00:00:00 2001 From: faissaloux Date: Thu, 28 Jul 2022 16:17:43 +0100 Subject: [PATCH 2/5] block/unblock user jobs tests --- app/Models/User.php | 5 +++++ tests/Integration/Jobs/BlockUserTest.php | 22 ++++++++++++++++++++++ tests/Integration/Jobs/UnblockUserTest.php | 22 ++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 tests/Integration/Jobs/BlockUserTest.php create mode 100644 tests/Integration/Jobs/UnblockUserTest.php diff --git a/app/Models/User.php b/app/Models/User.php index c0d9470b1..5e385b951 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -312,6 +312,11 @@ public function hasBlocked(User $user): bool return $this->blockedUsers()->where('blocked_user_id', $user->getKey())->exists(); } + public function hasUnblocked(User $user): bool + { + return ! $this->hasBlocked($user); + } + public function scopeWithUsersWhoDoesntBlock(Builder $query, User $user) { return $query->whereDoesntHave('blockedUsers', function ($query) use ($user) { diff --git a/tests/Integration/Jobs/BlockUserTest.php b/tests/Integration/Jobs/BlockUserTest.php new file mode 100644 index 000000000..398848914 --- /dev/null +++ b/tests/Integration/Jobs/BlockUserTest.php @@ -0,0 +1,22 @@ +createUser(); + $blocked = $this->createUser([ + 'username' => 'blocked', + 'email' => 'blocked@example.com', + ]); + + $this->loginAs($blocker); + + $this->dispatch(new BlockUser($blocker, $blocked)); + + expect($blocker->hasBlocked($blocked))->toBeTrue(); +}); diff --git a/tests/Integration/Jobs/UnblockUserTest.php b/tests/Integration/Jobs/UnblockUserTest.php new file mode 100644 index 000000000..f0b922095 --- /dev/null +++ b/tests/Integration/Jobs/UnblockUserTest.php @@ -0,0 +1,22 @@ +createUser(); + $unblocked = $this->createUser([ + 'username' => 'unblocked', + 'email' => 'unblocked@example.com', + ]); + + $this->loginAs($unblocker); + + $this->dispatch(new UnblockUser($unblocker, $unblocked)); + + expect($unblocker->hasUnblocked($unblocked))->toBeTrue(); +}); From f393144f245b54e1ba4867ed939b528c7346fad1 Mon Sep 17 00:00:00 2001 From: faissaloux Date: Thu, 28 Jul 2022 16:19:51 +0100 Subject: [PATCH 3/5] apply StyleCI fixes --- tests/Feature/BlockUsersTest.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/Feature/BlockUsersTest.php b/tests/Feature/BlockUsersTest.php index a353996b7..2a6b8b25c 100644 --- a/tests/Feature/BlockUsersTest.php +++ b/tests/Feature/BlockUsersTest.php @@ -9,13 +9,13 @@ test('cannot block user when not logged in', function () { $user = $this->createUser(); - + $this->put("/users/{$user->username}/block")->assertRedirectedTo('login'); }); test('cannot unblock user when not logged in', function () { $user = $this->createUser(); - + $this->put("/users/{$user->username}/unblockblock")->assertRedirectedTo('login'); }); @@ -23,7 +23,7 @@ $user = $this->createUser(); $this->loginAs($user); - + $this->put("/users/{$user->username}/block")->assertForbidden(); }); @@ -32,11 +32,11 @@ $moderator = $this->createUser([ 'username' => 'moderator', 'email' => 'moderator@example.com', - 'type' => User::MODERATOR + 'type' => User::MODERATOR, ]); $this->loginAs($user); - + $this->put("/users/{$moderator->username}/block")->assertForbidden(); }); @@ -48,7 +48,7 @@ ]); $this->loginAs($blocker); - + $this->put("/users/{$blocked->username}/block")->assertSessionHas('success', trans('settings.user.blocked')); }); @@ -60,6 +60,6 @@ ]); $this->loginAs($unblocker); - + $this->put("/users/{$unblocked->username}/unblockblock")->assertSessionHas('success', trans('settings.user.unblocked')); }); From 42fbca36c24d5bd9eb94d3aeb70a306087970364 Mon Sep 17 00:00:00 2001 From: faissaloux Date: Fri, 29 Jul 2022 14:43:19 +0100 Subject: [PATCH 4/5] rebase to main --- tests/Feature/BlockUsersTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Feature/BlockUsersTest.php b/tests/Feature/BlockUsersTest.php index 2a6b8b25c..8fe884446 100644 --- a/tests/Feature/BlockUsersTest.php +++ b/tests/Feature/BlockUsersTest.php @@ -16,7 +16,7 @@ test('cannot unblock user when not logged in', function () { $user = $this->createUser(); - $this->put("/users/{$user->username}/unblockblock")->assertRedirectedTo('login'); + $this->put("/users/{$user->username}/unblock")->assertRedirectedTo('login'); }); test('cannot block self', function () { @@ -61,5 +61,5 @@ $this->loginAs($unblocker); - $this->put("/users/{$unblocked->username}/unblockblock")->assertSessionHas('success', trans('settings.user.unblocked')); + $this->put("/users/{$unblocked->username}/unblock")->assertSessionHas('success', trans('settings.user.unblocked')); }); From 60efb0985369a26d51e9350c8da6238adea689be Mon Sep 17 00:00:00 2001 From: Dries Vints Date: Sun, 31 Jul 2022 10:58:09 +0200 Subject: [PATCH 5/5] Update UnblockUserTest.php --- tests/Integration/Jobs/UnblockUserTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Integration/Jobs/UnblockUserTest.php b/tests/Integration/Jobs/UnblockUserTest.php index f0b922095..1594d7592 100644 --- a/tests/Integration/Jobs/UnblockUserTest.php +++ b/tests/Integration/Jobs/UnblockUserTest.php @@ -7,7 +7,7 @@ uses(TestCase::class); uses(DatabaseMigrations::class); -it('can block a user', function () { +it('can unblock a user', function () { $unblocker = $this->createUser(); $unblocked = $this->createUser([ 'username' => 'unblocked',