mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-01-26 11:14:06 +00:00
3.3 - Refusing Orders When There Are No More Tickets
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
use App\Concert;
|
||||
use Carbon\Carbon;
|
||||
use App\Exceptions\NotEnoughTicketsException;
|
||||
use Illuminate\Foundation\Testing\WithoutMiddleware;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
@@ -58,6 +59,7 @@ class ConcertTest extends TestCase
|
||||
function can_order_concert_tickets()
|
||||
{
|
||||
$concert = factory(Concert::class)->create();
|
||||
$concert->addTickets(3);
|
||||
|
||||
$order = $concert->orderTickets('jane@example.com', 3);
|
||||
|
||||
@@ -84,4 +86,41 @@ class ConcertTest extends TestCase
|
||||
|
||||
$this->assertEquals(20, $concert->ticketsRemaining());
|
||||
}
|
||||
|
||||
/** @test */
|
||||
function trying_to_purchase_more_tickets_than_remain_throws_an_exception()
|
||||
{
|
||||
$concert = factory(Concert::class)->create();
|
||||
$concert->addTickets(10);
|
||||
|
||||
try {
|
||||
$concert->orderTickets('jane@example.com', 11);
|
||||
} catch (NotEnoughTicketsException $e) {
|
||||
$order = $concert->orders()->where('email', 'jane@example.com')->first();
|
||||
$this->assertNull($order);
|
||||
$this->assertEquals(10, $concert->ticketsRemaining());
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail("Order succeeded even though there were not enough tickets remaining.");
|
||||
}
|
||||
|
||||
/** @test */
|
||||
function cannot_order_tickets_that_have_already_been_purchased()
|
||||
{
|
||||
$concert = factory(Concert::class)->create();
|
||||
$concert->addTickets(10);
|
||||
$concert->orderTickets('jane@example.com', 8);
|
||||
|
||||
try {
|
||||
$concert->orderTickets('john@example.com', 3);
|
||||
} catch (NotEnoughTicketsException $e) {
|
||||
$johnsOrder = $concert->orders()->where('email', 'john@example.com')->first();
|
||||
$this->assertNull($johnsOrder);
|
||||
$this->assertEquals(2, $concert->ticketsRemaining());
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail("Order succeeded even though there were not enough tickets remaining.");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user