From ac6c4201700c6e67064ea6294c325a4a7027099c Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Wed, 16 Aug 2017 14:30:07 -0400 Subject: [PATCH] 131 - Asserting Against Sort Order --- .../PublishedConcertOrdersController.php | 1 + .../published-concert-orders/index.blade.php | 18 ++++++++----- .../Feature/Backstage/ViewConcertListTest.php | 22 ---------------- .../ViewPublishedConcertOrdersTest.php | 26 ++++++++++++++++++- tests/TestCase.php | 18 +++++++++++++ 5 files changed, 56 insertions(+), 29 deletions(-) diff --git a/app/Http/Controllers/Backstage/PublishedConcertOrdersController.php b/app/Http/Controllers/Backstage/PublishedConcertOrdersController.php index 648b906..06dcac1 100644 --- a/app/Http/Controllers/Backstage/PublishedConcertOrdersController.php +++ b/app/Http/Controllers/Backstage/PublishedConcertOrdersController.php @@ -14,6 +14,7 @@ class PublishedConcertOrdersController extends Controller return view('backstage.published-concert-orders.index', [ 'concert' => $concert, + 'orders' => $concert->orders()->latest()->take(10)->get(), ]); } } diff --git a/resources/views/backstage/published-concert-orders/index.blade.php b/resources/views/backstage/published-concert-orders/index.blade.php index 177abd7..aa518c2 100644 --- a/resources/views/backstage/published-concert-orders/index.blade.php +++ b/resources/views/backstage/published-concert-orders/index.blade.php @@ -60,6 +60,11 @@

Recent Orders

+ @if($orders->isEmpty()) +
+ No orders yet. +
+ @else @@ -71,17 +76,18 @@ - @foreach(range(1, 10) as $i) + @foreach($orders as $order) - - - - - + + + + + @endforeach
{{ collect(['john', 'jane', 'dave', 'donna'])->random() }}@example.com{{ rand(1, 4) }}${{ number_format(rand(5000, 15000) / 100, 2) }}**** 4242July 18, 2017 @ 12:37pm{{ $order->email }}{{ $order->ticketQuantity() }}${{ number_format($order->amount / 100, 2) }}**** {{ $order->card_last_four}}{{ $order->created_at->format('M j, Y @ g:ia') }}
+ @endif
diff --git a/tests/Feature/Backstage/ViewConcertListTest.php b/tests/Feature/Backstage/ViewConcertListTest.php index 918213c..86537ae 100644 --- a/tests/Feature/Backstage/ViewConcertListTest.php +++ b/tests/Feature/Backstage/ViewConcertListTest.php @@ -17,28 +17,6 @@ class ViewConcertListTest extends TestCase { use DatabaseMigrations; - protected function setUp() - { - parent::setUp(); - - Collection::macro('assertContains', function ($value) { - Assert::assertTrue($this->contains($value), "Failed asserting that the collection contains the specified value."); - }); - - Collection::macro('assertNotContains', function ($value) { - Assert::assertFalse($this->contains($value), "Failed asserting that the collection does not contain the specified value."); - }); - - Collection::macro('assertEquals', function ($items) { - Assert::assertEquals(count($this), count($items)); - - $this->zip($items)->each(function ($pair) { - list($a, $b) = $pair; - Assert::assertTrue($a->is($b)); - }); - }); - } - /** @test */ function guests_cannot_view_a_promoters_concert_list() { diff --git a/tests/Feature/Backstage/ViewPublishedConcertOrdersTest.php b/tests/Feature/Backstage/ViewPublishedConcertOrdersTest.php index fd2e586..8ae0fa2 100644 --- a/tests/Feature/Backstage/ViewPublishedConcertOrdersTest.php +++ b/tests/Feature/Backstage/ViewPublishedConcertOrdersTest.php @@ -22,13 +22,37 @@ class ViewPublishedConcertOrdersTest extends TestCase $user = factory(User::class)->create(); $concert = ConcertFactory::createPublished(['user_id' => $user->id]); - $order = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('11 days ago')]); + $oldOrder = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('11 days ago')]); + $recentOrder1 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('10 days ago')]); + $recentOrder2 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('9 days ago')]); + $recentOrder3 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('8 days ago')]); + $recentOrder4 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('7 days ago')]); + $recentOrder5 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('6 days ago')]); + $recentOrder6 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('5 days ago')]); + $recentOrder7 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('4 days ago')]); + $recentOrder8 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('3 days ago')]); + $recentOrder9 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('2 days ago')]); + $recentOrder10 = OrderFactory::createForConcert($concert, ['created_at' => Carbon::parse('1 days ago')]); $response = $this->actingAs($user)->get("/backstage/published-concerts/{$concert->id}/orders"); $response->assertStatus(200); $response->assertViewIs('backstage.published-concert-orders.index'); $this->assertTrue($response->data('concert')->is($concert)); + + $response->data('orders')->assertNotContains($oldOrder); + $response->data('orders')->assertEquals([ + $recentOrder10, + $recentOrder9, + $recentOrder8, + $recentOrder7, + $recentOrder6, + $recentOrder5, + $recentOrder4, + $recentOrder3, + $recentOrder2, + $recentOrder1, + ]); } /** @test */ diff --git a/tests/TestCase.php b/tests/TestCase.php index 9112cd3..c541e2d 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -7,6 +7,7 @@ use App\Exceptions\Handler; use PHPUnit\Framework\Assert; use Illuminate\Foundation\Testing\TestResponse; use Illuminate\Contracts\Debug\ExceptionHandler; +use Illuminate\Database\Eloquent\Collection as EloquentCollection; abstract class TestCase extends \Illuminate\Foundation\Testing\TestCase { @@ -30,6 +31,23 @@ abstract class TestCase extends \Illuminate\Foundation\Testing\TestCase TestResponse::macro('assertViewIs', function ($name) { Assert::assertEquals($name, $this->original->name()); }); + + EloquentCollection::macro('assertContains', function ($value) { + Assert::assertTrue($this->contains($value), "Failed asserting that the collection contains the specified value."); + }); + + EloquentCollection::macro('assertNotContains', function ($value) { + Assert::assertFalse($this->contains($value), "Failed asserting that the collection does not contain the specified value."); + }); + + EloquentCollection::macro('assertEquals', function ($items) { + Assert::assertEquals(count($this), count($items)); + + $this->zip($items)->each(function ($pair) { + list($a, $b) = $pair; + Assert::assertTrue($a->is($b)); + }); + }); } protected function disableExceptionHandling()