115 - Driving Out Basic Concert Updates

This commit is contained in:
Adam Wathan
2017-06-29 14:36:27 -04:00
parent 19068b2d77
commit 8c6b2cbb24
3 changed files with 75 additions and 1 deletions

View File

@@ -66,4 +66,27 @@ class ConcertsController extends Controller
'concert' => $concert,
]);
}
public function update($id)
{
$concert = Auth::user()->concerts()->findOrFail($id);
$concert->update([
'title' => request('title'),
'subtitle' => request('subtitle'),
'additional_information' => request('additional_information'),
'date' => Carbon::parse(vsprintf('%s %s', [
request('date'),
request('time'),
])),
'venue' => request('venue'),
'venue_address' => request('venue_address'),
'city' => request('city'),
'state' => request('state'),
'zip' => request('zip'),
'ticket_price' => request('ticket_price') * 100,
]);
return redirect()->route('backstage.concerts.index');
}
}

View File

@@ -20,8 +20,10 @@ Route::post('/login', 'Auth\LoginController@login')->name('auth.login');
Route::post('/logout', 'Auth\LoginController@logout')->name('auth.logout');
Route::group(['middleware' => 'auth', 'prefix' => 'backstage', 'namespace' => 'Backstage'], function () {
Route::get('/concerts', 'ConcertsController@index');
Route::get('/concerts', 'ConcertsController@index')->name('backstage.concerts.index');
Route::get('/concerts/new', 'ConcertsController@create')->name('backstage.concerts.new');
Route::post('/concerts', 'ConcertsController@store');
Route::get('/concerts/{id}/edit', 'ConcertsController@edit')->name('backstage.concerts.edit');
});
Route::patch('/backstage/concerts/{id}', 'Backstage\ConcertsController@update')->name('backstage.concerts.update');

View File

@@ -131,4 +131,53 @@ class EditConcertTest extends TestCase
$this->assertEquals(7250, $concert->ticket_price);
});
}
/** @test */
function promoters_cannot_edit_other_unpublished_concerts()
{
$user = factory(User::class)->create();
$otherUser = factory(User::class)->create();
$concert = factory(Concert::class)->create([
'user_id' => $otherUser->id,
'title' => 'Old title',
'subtitle' => 'Old subtitle',
'additional_information' => 'Old additional information',
'date' => Carbon::parse('2017-01-01 5:00pm'),
'venue' => 'Old venue',
'venue_address' => 'Old address',
'city' => 'Old city',
'state' => 'Old state',
'zip' => '00000',
'ticket_price' => 2000,
]);
$this->assertFalse($concert->isPublished());
$response = $this->actingAs($user)->patch("/backstage/concerts/{$concert->id}", [
'title' => 'New title',
'subtitle' => 'New subtitle',
'additional_information' => 'New additional information',
'date' => '2018-12-12',
'time' => '8:00pm',
'venue' => 'New venue',
'venue_address' => 'New address',
'city' => 'New city',
'state' => 'New state',
'zip' => '99999',
'ticket_price' => '72.50',
]);
$response->assertStatus(404);
tap($concert->fresh(), function ($concert) {
$this->assertEquals('Old title', $concert->title);
$this->assertEquals('Old subtitle', $concert->subtitle);
$this->assertEquals('Old additional information', $concert->additional_information);
$this->assertEquals(Carbon::parse('2017-01-01 5:00pm'), $concert->date);
$this->assertEquals('Old venue', $concert->venue);
$this->assertEquals('Old address', $concert->venue_address);
$this->assertEquals('Old city', $concert->city);
$this->assertEquals('Old state', $concert->state);
$this->assertEquals('00000', $concert->zip);
$this->assertEquals(2000, $concert->ticket_price);
});
}
}