diff --git a/app/Http/Controllers/Backstage/ConcertsController.php b/app/Http/Controllers/Backstage/ConcertsController.php index 2d17427..cfb0892 100644 --- a/app/Http/Controllers/Backstage/ConcertsController.php +++ b/app/Http/Controllers/Backstage/ConcertsController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Backstage; use App\Concert; +use App\NullFile; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Validation\Rule; @@ -55,7 +56,7 @@ class ConcertsController extends Controller 'zip' => request('zip'), 'ticket_price' => request('ticket_price') * 100, 'ticket_quantity' => (int) request('ticket_quantity'), - 'poster_image_path' => request('poster_image')->store('posters', 's3'), + 'poster_image_path' => request('poster_image', new NullFile)->store('posters', 's3'), ]); return redirect()->route('backstage.concerts.index'); diff --git a/app/NullFile.php b/app/NullFile.php new file mode 100644 index 0000000..15db2a7 --- /dev/null +++ b/app/NullFile.php @@ -0,0 +1,11 @@ +assertSessionHasErrors('poster_image'); $this->assertEquals(0, Concert::count()); } + + /** @test */ + function poster_image_is_optional() + { + $this->disableExceptionHandling(); + + $user = factory(User::class)->create(); + + $response = $this->actingAs($user)->post('/backstage/concerts', $this->validParams([ + 'poster_image' => null, + ])); + + tap(Concert::first(), function ($concert) use ($response, $user) { + $response->assertRedirect('/backstage/concerts'); + + $this->assertTrue($concert->user->is($user)); + + $this->assertNull($concert->poster_image_path); + }); + } }