4.2 - Returning Order Details

This commit is contained in:
Adam Wathan
2016-11-16 18:16:55 -05:00
parent 709e87bf69
commit 0f6993c505
3 changed files with 32 additions and 1 deletions

View File

@@ -30,7 +30,9 @@ class ConcertOrdersController extends Controller
try { try {
$order = $concert->orderTickets(request('email'), request('ticket_quantity')); $order = $concert->orderTickets(request('email'), request('ticket_quantity'));
$this->paymentGateway->charge(request('ticket_quantity') * $concert->ticket_price, request('payment_token')); $this->paymentGateway->charge(request('ticket_quantity') * $concert->ticket_price, request('payment_token'));
return response()->json([], 201);
return response()->json($order, 201);
} catch (PaymentFailedException $e) { } catch (PaymentFailedException $e) {
$order->cancel(); $order->cancel();
return response()->json([], 422); return response()->json([], 422);

View File

@@ -8,6 +8,11 @@ class Order extends Model
{ {
protected $guarded = []; protected $guarded = [];
public function concert()
{
return $this->belongsTo(Concert::class);
}
public function tickets() public function tickets()
{ {
return $this->hasMany(Ticket::class); return $this->hasMany(Ticket::class);
@@ -26,4 +31,13 @@ class Order extends Model
$this->delete(); $this->delete();
} }
public function toArray()
{
return [
'email' => $this->email,
'ticket_quantity' => $this->ticketQuantity(),
'amount' => $this->ticketQuantity() * $this->concert->ticket_price,
];
}
} }

View File

@@ -10,6 +10,21 @@ class OrderTest extends TestCase
{ {
use DatabaseMigrations; use DatabaseMigrations;
/** @test */
function converting_to_an_array()
{
$concert = factory(Concert::class)->create(['ticket_price' => 1200])->addTickets(5);
$order = $concert->orderTickets('jane@example.com', 5);
$result = $order->toArray();
$this->assertEquals([
'email' => 'jane@example.com',
'ticket_quantity' => 5,
'amount' => 6000,
], $result);
}
/** @test */ /** @test */
function tickets_are_released_when_an_order_is_cancelled() function tickets_are_released_when_an_order_is_cancelled()
{ {