120 - Creating Tickets at Time of Publish

This commit is contained in:
Adam Wathan
2017-07-04 11:02:04 -04:00
parent 7bd3702db3
commit a59e0e21a2
4 changed files with 10 additions and 2 deletions

View File

@@ -28,6 +28,7 @@ class Concert extends Model
public function publish() public function publish()
{ {
$this->update(['published_at' => $this->freshTimestamp()]); $this->update(['published_at' => $this->freshTimestamp()]);
$this->addTickets($this->ticket_quantity);
} }
public function getFormattedDateAttribute() public function getFormattedDateAttribute()

View File

@@ -49,7 +49,8 @@ class ConcertsController extends Controller
'state' => request('state'), 'state' => request('state'),
'zip' => request('zip'), 'zip' => request('zip'),
'ticket_price' => request('ticket_price') * 100, 'ticket_price' => request('ticket_price') * 100,
])->addTickets(request('ticket_quantity')); 'ticket_quantity' => (int) request('ticket_quantity'),
]);
$concert->publish(); $concert->publish();

View File

@@ -89,6 +89,7 @@ class AddConcertTest extends TestCase
$this->assertEquals('ON', $concert->state); $this->assertEquals('ON', $concert->state);
$this->assertEquals('12345', $concert->zip); $this->assertEquals('12345', $concert->zip);
$this->assertEquals(3250, $concert->ticket_price); $this->assertEquals(3250, $concert->ticket_price);
$this->assertEquals(75, $concert->ticket_quantity);
$this->assertEquals(75, $concert->ticketsRemaining()); $this->assertEquals(75, $concert->ticketsRemaining());
}); });
} }

View File

@@ -61,12 +61,17 @@ class ConcertTest extends TestCase
/** @test */ /** @test */
function concerts_can_be_published() function concerts_can_be_published()
{ {
$concert = factory(Concert::class)->create(['published_at' => null]); $concert = factory(Concert::class)->create([
'published_at' => null,
'ticket_quantity' => 5,
]);
$this->assertFalse($concert->isPublished()); $this->assertFalse($concert->isPublished());
$this->assertEquals(0, $concert->ticketsRemaining());
$concert->publish(); $concert->publish();
$this->assertTrue($concert->isPublished()); $this->assertTrue($concert->isPublished());
$this->assertEquals(5, $concert->ticketsRemaining());
} }
/** @test */ /** @test */