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]);
+});