From c106d04ba88fedb0145d3c187b6ddd601ea419fa Mon Sep 17 00:00:00 2001 From: Marley Rae Date: Wed, 27 Apr 2022 19:50:37 -0700 Subject: [PATCH] write tests; remove pending_notify --- database/migrations/10_create_owned_table.php | 1 - resources/views/admin/owned/create.blade.php | 1 - tests/Feature/Owned/CreateTest.php | 146 +++++++++++++++++- 3 files changed, 142 insertions(+), 6 deletions(-) diff --git a/database/migrations/10_create_owned_table.php b/database/migrations/10_create_owned_table.php index 737f2df..1e44271 100644 --- a/database/migrations/10_create_owned_table.php +++ b/database/migrations/10_create_owned_table.php @@ -24,7 +24,6 @@ public function up() $table->string('image')->nullable(); $table->timestamp('opened', 6)->nullable(); $table->boolean('hold_member_updates')->default(true); - $table->boolean('notify_pending')->default(true); $table->string('sort_by')->default('country'); }); } diff --git a/resources/views/admin/owned/create.blade.php b/resources/views/admin/owned/create.blade.php index b3e95bd..4f25184 100644 --- a/resources/views/admin/owned/create.blade.php +++ b/resources/views/admin/owned/create.blade.php @@ -20,7 +20,6 @@ - diff --git a/tests/Feature/Owned/CreateTest.php b/tests/Feature/Owned/CreateTest.php index 287aad5..d774b39 100644 --- a/tests/Feature/Owned/CreateTest.php +++ b/tests/Feature/Owned/CreateTest.php @@ -1,6 +1,8 @@ group('owned', 'admin'); @@ -8,10 +10,14 @@ beforeEach(function () { $this->user = Collective::first(); $this->request = [ - 'categories' => [rand(1, 57), rand(1, 57), rand(1, 57)], - 'url' => faker()->url, - 'subject' => faker()->word, - 'approved' => faker()->boolean, + 'categories' => [rand(1, 57), rand(1, 57), rand(1, 57)], + 'subject' => faker()->word, + 'status' => 'current', + 'slug' => faker()->slug(2), + 'title' => faker()->sentence(), + 'date_opened' => faker()->dateTimeThisMonth(), + 'hold_member_updates' => faker()->boolean(), + 'notify_pending' => faker()->boolean(), ]; }); @@ -26,3 +32,135 @@ $response->assertRedirect('/fanatic/login'); }); + +it('validates correct request', function () { + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertValid(); +}); + +it('fails missing categories', function () { + unset($this->request['categories']); + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails non-array categories', function () { + $this->request['categories'] = 'This is not an array.'; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails empty categories array', function () { + $this->request['categories'] = []; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails non-numeric category item', function () { + $this->request['categories'][] = 'a'; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails non-existant category', function () { + $invalidCat = (Category::all()->count()) + 10; + $this->request['categories'][] = $invalidCat; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails missing subject', function () { + unset($this->request['subject']); + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails non-string subject', function () { + $this->request['subject'] = 39502; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails missing status', function () { + unset($this->request['status']); + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails non-valid status', function () { + $this->request['status'] = 'This is not a correct status.'; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails missing slug', function () { + unset($this->request['slug']); + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('fails non-valid slug format', function () { + $this->request['slug'] = 'This is not a valid slug.'; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('allows null title', function () { + unset($this->request['title']); + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertValid(); +}); + +it('fails non-string title', function () { + $this->request['title'] = 494920; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('allows null date_opened', function () { + unset($this->request['date_opened']); + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertValid(); +}); + +it('fails non-date date_opened', function () { + $this->request['date_opened'] = 'This is not a date.'; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('allows null hold_member_updates', function () { + unset($this->request['hold_member_updates']); + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertValid(); +}); + +it('fails non-bool hold_member_updates', function () { + $this->request['holds_member_updates'] = 'This is not a boolean.'; + $response = $this->actingAs($this->user)->post('/fanatic/owned', $this->request); + + $response->assertInvalid(); +}); + +it('saves model to database', function () { + $owned = Owned::factory()->create(); + + $this->assertDatabaseHas('owned', ['id' => $owned->id]); +});