From 0d560ce6db3acd57157f38e5abf3505f33a38466 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 31 Mar 2017 16:51:58 -0400 Subject: [PATCH] 89 - Assigning Codes When Claiming Tickets --- app/Facades/TicketCode.php | 19 +++++++++++++++++++ app/Ticket.php | 7 +++++++ app/TicketCodeGenerator.php | 8 ++++++++ tests/unit/TicketTest.php | 15 +++++++++++++++ 4 files changed, 49 insertions(+) create mode 100644 app/Facades/TicketCode.php create mode 100644 app/TicketCodeGenerator.php diff --git a/app/Facades/TicketCode.php b/app/Facades/TicketCode.php new file mode 100644 index 0000000..d2d73a2 --- /dev/null +++ b/app/Facades/TicketCode.php @@ -0,0 +1,19 @@ +update(['reserved_at' => null]); } + public function claimFor($order) + { + $this->code = TicketCode::generate(); + $order->tickets()->save($this); + } + public function concert() { return $this->belongsTo(Concert::class); diff --git a/app/TicketCodeGenerator.php b/app/TicketCodeGenerator.php new file mode 100644 index 0000000..9c6fadd --- /dev/null +++ b/app/TicketCodeGenerator.php @@ -0,0 +1,8 @@ +assertNull($ticket->fresh()->reserved_at); } + + /** @test */ + function a_ticket_can_be_claimed_for_an_order() + { + $order = factory(Order::class)->create(); + $ticket = factory(Ticket::class)->create(['code' => null]); + TicketCode::shouldReceive('generate')->andReturn('TICKETCODE1'); + + $ticket->claimFor($order); + + $this->assertContains($ticket->id, $order->tickets->pluck('id')); + $this->assertEquals('TICKETCODE1', $ticket->code); + } }