diff --git a/app/Http/Controllers/ConcertOrdersController.php b/app/Http/Controllers/ConcertOrdersController.php index 9397045..c278f55 100644 --- a/app/Http/Controllers/ConcertOrdersController.php +++ b/app/Http/Controllers/ConcertOrdersController.php @@ -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); diff --git a/app/Order.php b/app/Order.php index 1d3df3e..1c2392f 100644 --- a/app/Order.php +++ b/app/Order.php @@ -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, + ]; + } } diff --git a/tests/unit/OrderTest.php b/tests/unit/OrderTest.php index 51ea1d2..290c4fa 100644 --- a/tests/unit/OrderTest.php +++ b/tests/unit/OrderTest.php @@ -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() {