From 0af6d356fc60acf230e62b712a28d6c338702f11 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 6 Apr 2024 01:34:41 +0100 Subject: [PATCH] fix: ignoring questions from feed --- app/Livewire/Questions/Show.php | 14 +++++++++++ resources/views/livewire/feed.blade.php | 2 +- .../views/livewire/questions/show.blade.php | 16 +++++++------ tests/Unit/Livewire/Questions/ShowTest.php | 23 ++++++++++++++----- 4 files changed, 41 insertions(+), 14 deletions(-) diff --git a/app/Livewire/Questions/Show.php b/app/Livewire/Questions/Show.php index 9a54794ca..7de0f8987 100644 --- a/app/Livewire/Questions/Show.php +++ b/app/Livewire/Questions/Show.php @@ -68,6 +68,20 @@ public function redirectToProfile(): void */ public function ignore(): void { + if (! auth()->check()) { + to_route('login'); + + return; + } + + if ($this->inIndex) { + $this->dispatch('notification.created', 'Question ignored.'); + + $this->dispatch('question.ignore', questionId: $this->questionId); + + return; + } + $question = Question::findOrFail($this->questionId); $this->authorize('ignore', $question); diff --git a/resources/views/livewire/feed.blade.php b/resources/views/livewire/feed.blade.php index 4f62cccea..2863beee4 100644 --- a/resources/views/livewire/feed.blade.php +++ b/resources/views/livewire/feed.blade.php @@ -1,7 +1,7 @@
@forelse ($questions as $question) - + @empty
There are no questions to show.
@endforelse diff --git a/resources/views/livewire/questions/show.blade.php b/resources/views/livewire/questions/show.blade.php index 9051e6cf6..911a8a3ee 100644 --- a/resources/views/livewire/questions/show.blade.php +++ b/resources/views/livewire/questions/show.blade.php @@ -98,13 +98,15 @@ class="h-10 w-10 rounded-full" Unpin @endif - - - Delete - + @if (! $question->is_ignored && auth()->user()->can('ignore', $question)) + + + Delete + + @endif @endif diff --git a/tests/Unit/Livewire/Questions/ShowTest.php b/tests/Unit/Livewire/Questions/ShowTest.php index 633529e50..6bfe5b011 100644 --- a/tests/Unit/Livewire/Questions/ShowTest.php +++ b/tests/Unit/Livewire/Questions/ShowTest.php @@ -82,27 +82,38 @@ $component = Livewire::actingAs($user)->test(Show::class, [ 'questionId' => $question->id, + 'inIndex' => false, ]); - $component->dispatch('question.ignore', $question->id); + $component->call('ignore'); expect($question->fresh()->is_ignored)->toBeTrue(); $component->assertRedirect(route('profile.show', ['username' => $question->to->username])); + + $question = Question::factory()->create(); + $user = User::find($question->to_id); + + $component = Livewire::actingAs($user)->test(Show::class, [ + 'questionId' => $question->id, + 'inIndex' => true, + ]); + + $component->call('ignore'); + $component->assertDispatched('notification.created', 'Question ignored.'); + $component->assertDispatched('question.ignore'); }); test('ignore auth', function () { $question = Question::factory()->create(); - $user = User::factory()->create(); - - $component = Livewire::actingAs($user)->test(Show::class, [ + $component = Livewire::test(Show::class, [ 'questionId' => $question->id, ]); - $component->dispatch('question.ignore', $question->id); + $component->call('ignore'); - $component->assertStatus(403); + $component->assertRedirect(route('login')); }); test('like', function () {