mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-01-30 01:46:12 +00:00
(rename unit folder back as Unit)
This commit is contained in:
86
tests/Unit/OrderTest.php
Normal file
86
tests/Unit/OrderTest.php
Normal file
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use Mockery;
|
||||
use App\Order;
|
||||
use App\Ticket;
|
||||
use Tests\TestCase;
|
||||
use App\Billing\Charge;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
|
||||
class OrderTest extends TestCase
|
||||
{
|
||||
use DatabaseMigrations;
|
||||
|
||||
/** @test */
|
||||
function creating_an_order_from_tickets_email_and_charge()
|
||||
{
|
||||
$charge = new Charge(['amount' => 3600, 'card_last_four' => '1234']);
|
||||
$tickets = collect([
|
||||
Mockery::spy(Ticket::class),
|
||||
Mockery::spy(Ticket::class),
|
||||
Mockery::spy(Ticket::class),
|
||||
]);
|
||||
|
||||
$order = Order::forTickets($tickets, 'john@example.com', $charge);
|
||||
|
||||
$this->assertEquals('john@example.com', $order->email);
|
||||
$this->assertEquals(3600, $order->amount);
|
||||
$this->assertEquals('1234', $order->card_last_four);
|
||||
$tickets->each->shouldHaveReceived('claimFor', [$order]);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
function retrieving_an_order_by_confirmation_number()
|
||||
{
|
||||
$order = factory(Order::class)->create([
|
||||
'confirmation_number' => 'ORDERCONFIRMATION1234',
|
||||
]);
|
||||
|
||||
$foundOrder = Order::findByConfirmationNumber('ORDERCONFIRMATION1234');
|
||||
|
||||
$this->assertEquals($order->id, $foundOrder->id);
|
||||
}
|
||||
|
||||
/** @test */
|
||||
function retrieving_a_nonexistent_order_by_confirmation_number_throws_an_exception()
|
||||
{
|
||||
try {
|
||||
Order::findByConfirmationNumber('NONEXISTENTCONFIRMATIONNUMBER');
|
||||
} catch (ModelNotFoundException $e) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->fail('No matching order was found for the specified confirmation number, but an exception was not thrown.');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
function converting_to_an_array()
|
||||
{
|
||||
$order = factory(Order::class)->create([
|
||||
'confirmation_number' => 'ORDERCONFIRMATION1234',
|
||||
'email' => 'jane@example.com',
|
||||
'amount' => 6000,
|
||||
]);
|
||||
$order->tickets()->saveMany([
|
||||
factory(Ticket::class)->create(['code' => 'TICKETCODE1']),
|
||||
factory(Ticket::class)->create(['code' => 'TICKETCODE2']),
|
||||
factory(Ticket::class)->create(['code' => 'TICKETCODE3']),
|
||||
]);
|
||||
|
||||
$result = $order->toArray();
|
||||
|
||||
$this->assertEquals([
|
||||
'confirmation_number' => 'ORDERCONFIRMATION1234',
|
||||
'email' => 'jane@example.com',
|
||||
'amount' => 6000,
|
||||
'tickets' => [
|
||||
['code' => 'TICKETCODE1'],
|
||||
['code' => 'TICKETCODE2'],
|
||||
['code' => 'TICKETCODE3'],
|
||||
]
|
||||
], $result);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user