From b93a052220256c9811019f375f649e66ba5ba45e Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Fri, 15 Dec 2023 15:03:35 -0500 Subject: [PATCH] Exclude rejected conferences from search index --- app/Models/Conference.php | 2 +- tests/Feature/ConferenceTest.php | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/Models/Conference.php b/app/Models/Conference.php index b6a27587..219a1faf 100644 --- a/app/Models/Conference.php +++ b/app/Models/Conference.php @@ -265,7 +265,7 @@ public function scopeWhereDismissedBy($query, $user) public function shouldBeSearchable(): bool { - return $this->starts_at > Carbon::now(); + return $this->starts_at > Carbon::now() && ! $this->isRejected(); } /** diff --git a/tests/Feature/ConferenceTest.php b/tests/Feature/ConferenceTest.php index 18a2b2d8..b8115328 100644 --- a/tests/Feature/ConferenceTest.php +++ b/tests/Feature/ConferenceTest.php @@ -1227,4 +1227,24 @@ public function searching_conferences_by_name(): void $this->assertContains($conferenceA->id, $results->pluck('id')); $this->assertNotContains($conferenceB->id, $results->pluck('id')); } + + /** @test */ + public function past_conferences_are_not_searchable(): void + { + $conferenceA = Conference::factory()->dates(now()->subDay())->create(); + $conferenceB = Conference::factory()->dates(now()->addDay())->create(); + + $this->assertFalse($conferenceA->shouldBeSearchable()); + $this->assertTrue($conferenceB->shouldBeSearchable()); + } + + /** @test */ + public function rejected_conferences_are_not_searchable(): void + { + $conferenceA = Conference::factory()->create(['rejected_at' => now()]); + $conferenceB = Conference::factory()->create(['rejected_at' => null]); + + $this->assertFalse($conferenceA->shouldBeSearchable()); + $this->assertTrue($conferenceB->shouldBeSearchable()); + } }