From 3a93aa0ea28f2685a5107dbbdd58616e779fabb5 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Fri, 5 Jul 2024 00:12:14 -0500 Subject: [PATCH] AdminEnsembles page tests --- .../Controllers/Admin/EnsembleController.php | 59 +++++--- .../ensembles/index-event-table.blade.php | 2 +- .../ensembles/index-rename-modal.blade.php | 2 +- routes/admin.php | 2 +- .../Pages/Setup/EnsemblesIndexTest.php | 134 ++++++++++++++++++ 5 files changed, 173 insertions(+), 26 deletions(-) create mode 100644 tests/Feature/Pages/Setup/EnsemblesIndexTest.php diff --git a/app/Http/Controllers/Admin/EnsembleController.php b/app/Http/Controllers/Admin/EnsembleController.php index 7574041..da056db 100644 --- a/app/Http/Controllers/Admin/EnsembleController.php +++ b/app/Http/Controllers/Admin/EnsembleController.php @@ -8,7 +8,7 @@ use App\Models\Event; use App\Models\SeatingLimit; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\DB; + use function redirect; class EnsembleController extends Controller @@ -16,16 +16,19 @@ class EnsembleController extends Controller public function index() { $events = Event::with('ensembles')->get(); - return view('admin.ensembles.index',compact('events')); + + return view('admin.ensembles.index', compact('events')); } public function store(Request $request) { - if(! Auth::user()->is_admin) abort(403); + if (! Auth::user()->is_admin) { + abort(403); + } request()->validate([ 'name' => 'required', - 'code' => ['required','max:6'], - 'event_id' => ['required','exists:events,id'] + 'code' => ['required', 'max:6'], + 'event_id' => ['required', 'exists:events,id'], ]); Ensemble::create([ @@ -34,29 +37,32 @@ class EnsembleController extends Controller 'event_id' => request('event_id'), ]); - return redirect()->route('admin.ensembles.index')->with('success','Ensemble created successfully'); + return redirect()->route('admin.ensembles.index')->with('success', 'Ensemble created successfully'); } public function destroy(Request $request, Ensemble $ensemble) { - if(! Auth::user()->is_admin) abort(403); + if ($ensemble->seats->count() > 0) { + return redirect()->route('admin.ensembles.index')->with('error', 'Ensemble has students seated and cannot be deleted'); + } $ensemble->delete(); + return redirect()->route('admin.ensembles.index')->with('success', 'Ensemble deleted successfully'); } public function updateEnsemble(Request $request, Ensemble $ensemble) { - if(! Auth::user()->is_admin) abort(403); request()->validate([ 'name' => 'required', - 'code' => 'required|max:6' + 'code' => 'required|max:6', ]); $ensemble->update([ 'name' => request('name'), - 'code' => request('code') + 'code' => request('code'), ]); - return redirect()->route('admin.ensembles.index')->with('success','Ensemble updated successfully'); + + return redirect()->route('admin.ensembles.index')->with('success', 'Ensemble updated successfully'); } public function seatingLimits(Ensemble $ensemble) @@ -65,33 +71,40 @@ class EnsembleController extends Controller if ($ensemble->exists()) { $ensemble->load('seatingLimits'); } - return view('admin.ensembles.seatingLimits',compact('ensemble','ensembles')); + + return view('admin.ensembles.seatingLimits', compact('ensemble', 'ensembles')); } public function seatingLimitsSet(Request $request, Ensemble $ensemble) { $request->validate([ - 'audition' => 'required', - 'audition.*' => ['integer','min:0'] + 'audition' => 'required', + 'audition.*' => ['integer', 'min:0'], ]); - foreach($ensemble->auditions as $audition) { + foreach ($ensemble->auditions as $audition) { SeatingLimit::upsert( - [[ - 'ensemble_id' => $ensemble->id, - 'audition_id' => $audition->id, - 'maximum_accepted' => $request->audition[$audition->id] - ]], - uniqueBy: ['ensemble_id','audition_id'], + [ + [ + 'ensemble_id' => $ensemble->id, + 'audition_id' => $audition->id, + 'maximum_accepted' => $request->audition[$audition->id], + ], + ], + uniqueBy: ['ensemble_id', 'audition_id'], update: ['maximum_accepted'] ); } - return redirect()->route('admin.ensembles.seatingLimits')->with('success', 'Seating limits set for ' . $ensemble->name); + + return redirect()->route('admin.ensembles.seatingLimits')->with('success', + 'Seating limits set for '.$ensemble->name); } public function updateEnsembleRank(Request $request) { - if(! Auth::user()->is_admin) abort(403); + if (! Auth::user()->is_admin) { + abort(403); + } $order = $request->input('order'); $eventId = $request->input('event_id'); diff --git a/resources/views/admin/ensembles/index-event-table.blade.php b/resources/views/admin/ensembles/index-event-table.blade.php index baebc90..9f337ce 100644 --- a/resources/views/admin/ensembles/index-event-table.blade.php +++ b/resources/views/admin/ensembles/index-event-table.blade.php @@ -15,7 +15,7 @@ @foreach($event->ensembles as $ensemble) - +