46 - A Change in Behavior

This commit is contained in:
Adam Wathan
2016-12-09 16:29:27 -05:00
parent de24da27ea
commit 7069917a18
4 changed files with 12 additions and 7 deletions

View File

@@ -43,6 +43,7 @@ class ConcertOrdersController extends Controller
return response()->json($order, 201); return response()->json($order, 201);
} catch (PaymentFailedException $e) { } catch (PaymentFailedException $e) {
$reservation->cancel();
return response()->json([], 422); return response()->json([], 422);
} catch (NotEnoughTicketsException $e) { } catch (NotEnoughTicketsException $e) {
return response()->json([], 422); return response()->json([], 422);

View File

@@ -21,7 +21,7 @@ class Ticket extends Model
public function release() public function release()
{ {
$this->update(['order_id' => null]); $this->update(['reserved_at' => null]);
} }
public function concert() public function concert()

View File

@@ -60,3 +60,9 @@ $factory->define(App\Ticket::class, function (Faker\Generator $faker) {
}, },
]; ];
}); });
$factory->state(App\Ticket::class, 'reserved', function ($faker) {
return [
'reserved_at' => Carbon::now(),
];
});

View File

@@ -2,6 +2,7 @@
use App\Ticket; use App\Ticket;
use App\Concert; use App\Concert;
use Carbon\Carbon;
use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions; use Illuminate\Foundation\Testing\DatabaseTransactions;
@@ -24,14 +25,11 @@ class TicketTest extends TestCase
/** @test */ /** @test */
function a_ticket_can_be_released() function a_ticket_can_be_released()
{ {
$concert = factory(Concert::class)->create(); $ticket = factory(Ticket::class)->states('reserved')->create();
$concert->addTickets(1); $this->assertNotNull($ticket->reserved_at);
$order = $concert->orderTickets('jane@example.com', 1);
$ticket = $order->tickets()->first();
$this->assertEquals($order->id, $ticket->order_id);
$ticket->release(); $ticket->release();
$this->assertNull($ticket->fresh()->order_id); $this->assertNull($ticket->fresh()->reserved_at);
} }
} }