diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php index f3c686e3..5e505655 100644 --- a/app/Http/Controllers/EventController.php +++ b/app/Http/Controllers/EventController.php @@ -10,7 +10,7 @@ use Auth; use Carbon\Carbon; use Image; use Validator; - +use Log; class EventController extends MyBaseController { @@ -43,8 +43,8 @@ class EventController extends MyBaseController if (!$event->validate($request->all())) { return response()->json([ - 'status' => 'error', - 'messages' => $event->errors(), + 'status' => 'error', + 'messages' => $event->errors(), ]); } @@ -101,7 +101,7 @@ class EventController extends MyBaseController $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { - return Response::json([ + return response()->json([ 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); @@ -118,13 +118,22 @@ class EventController extends MyBaseController } elseif ($request->get('organiser_id')) { $event->organiser_id = $request->get('organiser_id'); } else { /* Somethings gone horribly wrong */ - return Response::json([ + return response()->json([ 'status' => 'error', 'messages' => 'There was an issue finding the organiser.', ]); } - $event->save(); + try { + $event->save(); + } catch (\Exception $e) { + Log::error($e); + + return response()->json([ + 'status' => 'error', + 'messages' => 'Whoops! There was a problem creating your event. Please try again.', + ]); + } if ($request->hasFile('event_image')) { $path = public_path().'/'.config('attendize.event_images_path'); diff --git a/app/Http/Controllers/OrganiserController.php b/app/Http/Controllers/OrganiserController.php index 1a4a7f19..58fd93cc 100644 --- a/app/Http/Controllers/OrganiserController.php +++ b/app/Http/Controllers/OrganiserController.php @@ -13,7 +13,7 @@ class OrganiserController extends MyBaseController * * @return \Illuminate\Contracts\View\View */ - public function showSelectOragniser() + public function showSelectOrganiser() { return view('ManageOrganiser.SelectOrganiser'); } diff --git a/app/Http/Middleware/FirstRunMiddleware.php b/app/Http/Middleware/FirstRunMiddleware.php index a76466c3..2565ce62 100644 --- a/app/Http/Middleware/FirstRunMiddleware.php +++ b/app/Http/Middleware/FirstRunMiddleware.php @@ -6,6 +6,7 @@ use App\Models\Organiser; use Closure; use Redirect; use Request; +use DB; class FirstRunMiddleware { @@ -19,12 +20,13 @@ class FirstRunMiddleware */ public function handle($request, Closure $next) { - + DB::enableQueryLog(); /* * If there are no organisers then redirect the user to create one * else - if there's only one organiser bring the user straight there. */ if (Organiser::scope()->count() === 0 && !($request->route()->getName() == 'showCreateOrganiser') && !($request->route()->getName() == 'postCreateOrganiser')) { + dd(DB::getQueryLog()); return redirect(route('showCreateOrganiser', [ 'first_run' => '1', ])); diff --git a/app/Http/routes.php b/app/Http/routes.php index 3ca9cdcf..5fff6d29 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -217,7 +217,7 @@ Route::group(['middleware' => ['auth', 'first.run']], function () { Route::get('select_organiser', [ 'as' => 'showSelectOrganiser', - 'uses' => 'OrganiserController@showSelectOragniser', + 'uses' => 'OrganiserController@showSelectOrganiser', ]); /* @@ -233,10 +233,16 @@ Route::group(['middleware' => ['auth', 'first.run']], function () { 'as' => 'showOrganiserEvents', 'uses' => 'OrganiserEventsController@showEvents', ]); + Route::get('{organiser_id}/customize', [ 'as' => 'showOrganiserCustomize', 'uses' => 'OrganiserCustomizeController@showCustomize', ]); + Route::post('{organiser_id}/customize', [ + 'as' => 'postEditOrganiser', + 'uses' => 'OrganiserCustomizeController@postEditOrganiser', + ]); + Route::get('create', [ 'as' => 'showCreateOrganiser', 'uses' => 'OrganiserController@showCreateOrganiser', @@ -245,14 +251,6 @@ Route::group(['middleware' => ['auth', 'first.run']], function () { 'as' => 'postCreateOrganiser', 'uses' => 'OrganiserController@postCreateOrganiser', ]); - Route::get('{organiser_id}/edit', [ - 'as' => 'showEditOrganiser', - 'uses' => 'OrganiserController@showEditOrganiser', - ]); - Route::post('{organiser_id}/edit', [ - 'as' => 'postEditOrganiser', - 'uses' => 'OrganiserCustomizeController@postEditOrganiser', - ]); Route::post('{organiser_id}/page_design', [ 'as' => 'postEditOrganiserPageDesign', diff --git a/app/Models/MyBaseModel.php b/app/Models/MyBaseModel.php index f9b7dc8e..c9f0783e 100644 --- a/app/Models/MyBaseModel.php +++ b/app/Models/MyBaseModel.php @@ -120,7 +120,7 @@ class MyBaseModel extends \Illuminate\Database\Eloquent\Model * * @return bool|null|string */ - public function getFormatedDate($field, $format = 'd-m-Y H:i') + public function getFormattedDate($field, $format = 'd-m-Y H:i') { return $this->$field === null ? null : date($format, strtotime($this->$field)); } diff --git a/config/database.php b/config/database.php index 9cd3450b..2635a383 100644 --- a/config/database.php +++ b/config/database.php @@ -48,7 +48,7 @@ return [ 'sqlite' => [ 'driver' => 'sqlite', - 'database' => storage_path().'/database.sqlite', + 'database' => ':memory:', 'prefix' => '', ], diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php index e4d7b45a..3a22ed38 100644 --- a/database/factories/ModelFactory.php +++ b/database/factories/ModelFactory.php @@ -55,8 +55,9 @@ $factory->define(App\Models\DateFormat::class, function (Faker\Generator $faker) $factory->define(App\Models\DateTimeFormat::class, function (Faker\Generator $faker) { return [ - 'format' => "Y-m-d H:i:s", - 'label' => "utc", + 'format' => "Y-m-d H:i:s", + 'picker_format' => "Y-m-d H:i:s", + 'label' => "utc", ]; }); @@ -132,6 +133,7 @@ $factory->define(App\Models\Organiser::class, function (Faker\Generator $faker) 'twitter' => 'https://twitter.com/organizer-profile', 'logo_path' => 'path/to/logo', 'is_email_confirmed' => 0, + 'confirmation_key' => str_random(15), ]; }); diff --git a/database/migrations/2016_05_25_145857_attendee_ref_fix.php b/database/migrations/2016_05_25_145857_attendee_ref_fix.php index 78c3a55f..7708ca8c 100644 --- a/database/migrations/2016_05_25_145857_attendee_ref_fix.php +++ b/database/migrations/2016_05_25_145857_attendee_ref_fix.php @@ -15,7 +15,7 @@ class AttendeeRefFix extends Migration public function up() { Schema::table('attendees', function (Blueprint $table) { - $table->integer('reference_index'); + $table->integer('reference_index')->default(0); }); $attendees = Attendee::all(); @@ -28,9 +28,6 @@ class AttendeeRefFix extends Migration Schema::table('attendees', function (Blueprint $table) { $table->dropColumn('reference'); }); - - - } /** @@ -54,8 +51,6 @@ class AttendeeRefFix extends Migration $attendee->reference = $order->order_reference. '-' . ++$attendee_count; $attendee->save(); } - } - } } diff --git a/resources/views/ManageEvent/Modals/EditTicket.blade.php b/resources/views/ManageEvent/Modals/EditTicket.blade.php index 8f418970..dd72472e 100644 --- a/resources/views/ManageEvent/Modals/EditTicket.blade.php +++ b/resources/views/ManageEvent/Modals/EditTicket.blade.php @@ -38,7 +38,7 @@
{!! Form::label('start_sale_date', 'Start Sale On', ['class'=>' control-label']) !!} - {!! Form::text('start_sale_date', $ticket->getFormatedDate('start_sale_date'), + {!! Form::text('start_sale_date', $ticket->getFormattedDate('start_sale_date'), [ 'class' => 'form-control start hasDatepicker', 'data-field' => 'datetime', @@ -55,7 +55,7 @@ [ 'class'=>' control-label ' ]) !!} - {!! Form::text('end_sale_date', $ticket->getFormatedDate('end_sale_date'), + {!! Form::text('end_sale_date', $ticket->getFormattedDate('end_sale_date'), [ 'class' => 'form-control end hasDatepicker', 'data-field' => 'datetime', diff --git a/resources/views/ManageEvent/Partials/EditEventForm.blade.php b/resources/views/ManageEvent/Partials/EditEventForm.blade.php index d89fa5ce..c63e251a 100644 --- a/resources/views/ManageEvent/Partials/EditEventForm.blade.php +++ b/resources/views/ManageEvent/Partials/EditEventForm.blade.php @@ -115,7 +115,7 @@
{!! Form::label('start_date', 'Event Start Date', array('class'=>'required control-label')) !!} - {!! Form::text('start_date', $event->getFormatedDate('start_date'), + {!! Form::text('start_date', $event->getFormattedDate('start_date'), [ 'class'=>'form-control start hasDatepicker ', 'data-field'=>'datetime', @@ -133,7 +133,7 @@ [ 'class'=>'required control-label ' ]) !!} - {!! Form::text('end_date', $event->getFormatedDate('end_date'), + {!! Form::text('end_date', $event->getFormattedDate('end_date'), [ 'class'=>'form-control end hasDatepicker ', 'data-field'=>'datetime', diff --git a/tests/EventTest.php b/tests/EventTest.php index d130c3bb..466ab5a9 100644 --- a/tests/EventTest.php +++ b/tests/EventTest.php @@ -3,16 +3,74 @@ use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseTransactions; -use App\Models\Organiser; +use App\Models\Event; class EventTest extends TestCase { - - public function testCreateEvent() + public function test_event_is_created_successfully() { + $this->actingAs($this->test_user); + $organiser = factory(App\Models\Organiser::class)->create(['account_id' => 1]); + + $server = array('HTTP_X-Requested-With' => 'XMLHttpRequest'); + + $post = array( + 'organiser_id' => $organiser->id, + 'title' => $this->faker->text, + 'description' => $this->faker->paragraph, + 'location_venue_name' => $this->faker->company, + 'location_address_line_1' => $this->faker->streetAddress, + 'location_address_line_2' => '', + 'location_state' => $this->faker->city, + 'location_post_code' => $this->faker->postcode, + 'start_date' => date('d-m-Y H:i', strtotime('+ 30 days')), + 'end_date' => date('d-m-Y H:i', strtotime('+ 60 days')), + ); + + $this->call('post', route('postCreateEvent'), $post, $server); + + $this->seeJson([ + 'status' => 'success', + 'id' => 1, + ]); } - + public function test_event_is_not_created_and_validation_error_messages_show() + { + $this->actingAs($this->test_user); + $organiser = factory(App\Models\Organiser::class)->create(['account_id' => 1]); + + $server = array('HTTP_X-Requested-With' => 'XMLHttpRequest'); + + $post = array( + 'organiser_id' => $organiser->id, + ); + + $this->call('post', route('postCreateEvent'), $post, $server); + + $this->seeJson([ + 'status' => 'error', + ]); + } + + public function test_event_can_be_edited() + { + $organiser = factory(App\Models\Organiser::class)->create(['account_id' => 1]); + $event = factory(App\Models\Event::class)->create([ + 'account_id' => $organiser->account_id, + 'organiser_id' => $organiser->id, + 'user_id' => $this->test_user->id, + ]); + + $this->actingAs($this->test_user) + ->visit(route('showEventCustomize', ['event_id' => $event->id])) + ->type($this->faker->text, 'title') + ->type($this->faker->paragraph, 'description') + ->press('Save Changes') + ->seeJson([ + 'status' => 'success', + ]); + } } diff --git a/tests/OrganiserTest.php b/tests/OrganiserTest.php index 21120a25..01b50ab4 100644 --- a/tests/OrganiserTest.php +++ b/tests/OrganiserTest.php @@ -7,10 +7,8 @@ use App\Models\Organiser; class OrganiserTest extends TestCase { - public function testCreateOrganiser() { - $this->actingAs($this->test_user) ->visit(route('showCreateOrganiser')) ->type($this->faker->name, 'name') @@ -23,13 +21,13 @@ class OrganiserTest extends TestCase 'status' => 'success' ]); } - - public function testEditOrganiser() + + public function testEditOrganiser() { $organiser = factory(App\Models\Organiser::class)->create(); $this->actingAs($this->test_user) - ->visit(route('showEditOrganiser', ['organiser_id' => $organiser->id])) + ->visit(route('showOrganiserCustomize', ['organiser_id' => $organiser->id])) ->type($this->faker->name, 'name') ->type($this->faker->email, 'email') ->type($this->faker->email, 'about') @@ -39,7 +37,5 @@ class OrganiserTest extends TestCase ->seeJson([ 'status' => 'success' ]); - } - } diff --git a/tests/TestCase.php b/tests/TestCase.php index 0de19c2f..a8dc01d1 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -28,14 +28,14 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase /** * Our test user - * + * * @var */ protected $test_user; /** * Our faker instance - * + * * @var */ protected $faker; @@ -87,5 +87,4 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase public function tearDown(){ parent::tearDown(); } - } \ No newline at end of file diff --git a/tests/UserTest.php b/tests/UserTest.php index 82b1eda8..d6e337be 100644 --- a/tests/UserTest.php +++ b/tests/UserTest.php @@ -8,7 +8,7 @@ class UserTest extends TestCase { /** - * A basic test example. + * Test sign up page is successful * * @return void */ @@ -24,7 +24,7 @@ class UserTest extends TestCase ->press('Sign Up') ->seePageIs(route('login')); } - + public function testLogin() { $this->visit(route('login'))