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 {
$order = $concert->orderTickets(request('email'), request('ticket_quantity'));
$this->paymentGateway->charge(request('ticket_quantity') * $concert->ticket_price, request('payment_token'));
return response()->json([], 201);
return response()->json($order, 201);
} catch (PaymentFailedException $e) {
$order->cancel();
return response()->json([], 422);

View File

@@ -8,6 +8,11 @@ class Order extends Model
{
protected $guarded = [];
public function concert()
{
return $this->belongsTo(Concert::class);
}
public function tickets()
{
return $this->hasMany(Ticket::class);
@@ -26,4 +31,13 @@ class Order extends Model
$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;
/** @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 */
function tickets_are_released_when_an_order_is_cancelled()
{