mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-01-26 11:14:06 +00:00
104 - Adding a Valid Concert
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Http\Controllers\Backstage;
|
||||
|
||||
use App\Concert;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
@@ -11,4 +13,25 @@ class ConcertsController extends Controller
|
||||
{
|
||||
return view('backstage.concerts.create');
|
||||
}
|
||||
|
||||
public function store()
|
||||
{
|
||||
$concert = Concert::create([
|
||||
'title' => request('title'),
|
||||
'subtitle' => request('subtitle'),
|
||||
'date' => Carbon::parse(vsprintf('%s %s', [
|
||||
request('date'),
|
||||
request('time'),
|
||||
])),
|
||||
'ticket_price' => request('ticket_price') * 100,
|
||||
'venue' => request('venue'),
|
||||
'venue_address' => request('venue_address'),
|
||||
'city' => request('city'),
|
||||
'state' => request('state'),
|
||||
'zip' => request('zip'),
|
||||
'additional_information' => request('additional_information'),
|
||||
])->addTickets(request('ticket_quantity'));
|
||||
|
||||
return redirect()->route('concerts.show', $concert);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
|
||||
*/
|
||||
|
||||
Route::get('/concerts/{id}', 'ConcertsController@show');
|
||||
Route::get('/concerts/{id}', 'ConcertsController@show')->name('concerts.show');
|
||||
Route::post('/concerts/{id}/orders', 'ConcertOrdersController@store');
|
||||
Route::get('/orders/{confirmationNumber}', 'OrdersController@show');
|
||||
|
||||
@@ -19,6 +19,8 @@ Route::get('/login', 'Auth\LoginController@showLoginForm')->name('auth.show-logi
|
||||
Route::post('/login', 'Auth\LoginController@login')->name('auth.login');
|
||||
Route::post('/logout', 'Auth\LoginController@logout')->name('auth.logout');
|
||||
|
||||
Route::group(['middleware' => 'auth'], function () {
|
||||
Route::get('/backstage/concerts/new', 'Backstage\ConcertsController@create');
|
||||
Route::group(['middleware' => 'auth', 'prefix' => 'backstage', 'namespace' => 'Backstage'], function () {
|
||||
Route::get('/concerts/new', 'ConcertsController@create');
|
||||
Route::post('/concerts', 'ConcertsController@store');
|
||||
});
|
||||
|
||||
|
||||
@@ -30,4 +30,67 @@ class AddConcertTest extends TestCase
|
||||
$response->assertStatus(302);
|
||||
$response->assertRedirect('/login');
|
||||
}
|
||||
|
||||
/** @test */
|
||||
function adding_a_valid_concert()
|
||||
{
|
||||
$this->disableExceptionHandling();
|
||||
|
||||
$user = factory(User::class)->create();
|
||||
|
||||
$response = $this->actingAs($user)->post('/backstage/concerts', [
|
||||
'title' => 'No Warning',
|
||||
'subtitle' => 'with Cruel Hand and Backtrack',
|
||||
'additional_information' => "You must be 19 years of age to attend this concert.",
|
||||
'date' => '2017-11-18',
|
||||
'time' => '8:00pm',
|
||||
'venue' => 'The Mosh Pit',
|
||||
'venue_address' => '123 Fake St.',
|
||||
'city' => 'Laraville',
|
||||
'state' => 'ON',
|
||||
'zip' => '12345',
|
||||
'ticket_price' => '32.50',
|
||||
'ticket_quantity' => '75',
|
||||
]);
|
||||
|
||||
tap(Concert::first(), function ($concert) use ($response) {
|
||||
$response->assertStatus(302);
|
||||
$response->assertRedirect("/concerts/{$concert->id}");
|
||||
|
||||
$this->assertEquals('No Warning', $concert->title);
|
||||
$this->assertEquals('with Cruel Hand and Backtrack', $concert->subtitle);
|
||||
$this->assertEquals("You must be 19 years of age to attend this concert.", $concert->additional_information);
|
||||
$this->assertEquals(Carbon::parse('2017-11-18 8:00pm'), $concert->date);
|
||||
$this->assertEquals('The Mosh Pit', $concert->venue);
|
||||
$this->assertEquals('123 Fake St.', $concert->venue_address);
|
||||
$this->assertEquals('Laraville', $concert->city);
|
||||
$this->assertEquals('ON', $concert->state);
|
||||
$this->assertEquals('12345', $concert->zip);
|
||||
$this->assertEquals(3250, $concert->ticket_price);
|
||||
$this->assertEquals(75, $concert->ticketsRemaining());
|
||||
});
|
||||
}
|
||||
|
||||
/** @test */
|
||||
function guests_cannot_add_new_concerts()
|
||||
{
|
||||
$response = $this->post('/backstage/concerts', [
|
||||
'title' => 'No Warning',
|
||||
'subtitle' => 'with Cruel Hand and Backtrack',
|
||||
'additional_information' => "You must be 19 years of age to attend this concert.",
|
||||
'date' => '2017-11-18',
|
||||
'time' => '8:00pm',
|
||||
'venue' => 'The Mosh Pit',
|
||||
'venue_address' => '123 Fake St.',
|
||||
'city' => 'Laraville',
|
||||
'state' => 'ON',
|
||||
'zip' => '12345',
|
||||
'ticket_price' => '32.50',
|
||||
'ticket_quantity' => '75',
|
||||
]);
|
||||
|
||||
$response->assertStatus(302);
|
||||
$response->assertRedirect('/login');
|
||||
$this->assertEquals(0, Concert::count());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user