diff --git a/app/Concert.php b/app/Concert.php index 6c9ae03..6ee6f9b 100644 --- a/app/Concert.php +++ b/app/Concert.php @@ -20,6 +20,16 @@ class Concert extends Model return $query->whereNotNull('published_at'); } + public function isPublished() + { + return $this->published_at !== null; + } + + public function publish() + { + $this->update(['published_at' => $this->freshTimestamp()]); + } + public function getFormattedDateAttribute() { return $this->date->format('F j, Y'); diff --git a/app/Http/Controllers/Backstage/ConcertsController.php b/app/Http/Controllers/Backstage/ConcertsController.php index e5e2dfb..5fa1d15 100644 --- a/app/Http/Controllers/Backstage/ConcertsController.php +++ b/app/Http/Controllers/Backstage/ConcertsController.php @@ -46,6 +46,8 @@ class ConcertsController extends Controller 'ticket_price' => request('ticket_price') * 100, ])->addTickets(request('ticket_quantity')); + $concert->publish(); + return redirect()->route('concerts.show', $concert); } } diff --git a/tests/Feature/Backstage/AddConcertTest.php b/tests/Feature/Backstage/AddConcertTest.php index d4a5692..1255e92 100644 --- a/tests/Feature/Backstage/AddConcertTest.php +++ b/tests/Feature/Backstage/AddConcertTest.php @@ -83,6 +83,8 @@ class AddConcertTest extends TestCase $this->assertTrue($concert->user->is($user)); + $this->assertTrue($concert->isPublished()); + $this->assertEquals('No Warning', $concert->title); $this->assertEquals('with Cruel Hand and Backtrack', $concert->subtitle); $this->assertEquals("You must be 19 years of age to attend this concert.", $concert->additional_information); diff --git a/tests/Unit/ConcertTest.php b/tests/Unit/ConcertTest.php index baf58c0..0413f07 100644 --- a/tests/Unit/ConcertTest.php +++ b/tests/Unit/ConcertTest.php @@ -58,6 +58,17 @@ class ConcertTest extends TestCase $this->assertFalse($publishedConcerts->contains($unpublishedConcert)); } + /** @test */ + function concerts_can_be_published() + { + $concert = factory(Concert::class)->create(['published_at' => null]); + $this->assertFalse($concert->isPublished()); + + $concert->publish(); + + $this->assertTrue($concert->isPublished()); + } + /** @test */ function can_add_tickets() {