Complete issue
This commit is contained in:
parent
0597831dc1
commit
772115099f
|
|
@ -30,11 +30,14 @@ class EnsembleController extends Controller
|
|||
'code' => ['required', 'max:6'],
|
||||
'event_id' => ['required', 'exists:events,id'],
|
||||
]);
|
||||
// get the maximum value of rank from the ensembles table where event_id is equal to the request event_id
|
||||
$maxCode = Ensemble::where('event_id', request('event_id'))->max('rank');
|
||||
|
||||
Ensemble::create([
|
||||
'name' => request('name'),
|
||||
'code' => request('code'),
|
||||
'event_id' => request('event_id'),
|
||||
'rank' => $maxCode + 1,
|
||||
]);
|
||||
|
||||
return redirect()->route('admin.ensembles.index')->with('success', 'Ensemble created successfully');
|
||||
|
|
@ -43,7 +46,8 @@ class EnsembleController extends Controller
|
|||
public function destroy(Request $request, Ensemble $ensemble)
|
||||
{
|
||||
if ($ensemble->seats->count() > 0) {
|
||||
return redirect()->route('admin.ensembles.index')->with('error', 'Ensemble has students seated and cannot be deleted');
|
||||
return redirect()->route('admin.ensembles.index')->with('error',
|
||||
'Ensemble has students seated and cannot be deleted');
|
||||
}
|
||||
$ensemble->delete();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<?php
|
||||
<?php /** @noinspection PhpUnhandledExceptionInspection */
|
||||
|
||||
use App\Models\Audition;
|
||||
use App\Models\Ensemble;
|
||||
|
|
@ -10,6 +10,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
|
|||
use function Pest\Laravel\delete;
|
||||
use function Pest\Laravel\get;
|
||||
use function Pest\Laravel\patch;
|
||||
use function Pest\Laravel\post;
|
||||
|
||||
uses(RefreshDatabase::class);
|
||||
|
||||
|
|
@ -132,3 +133,50 @@ it('allows an administrator to update an ensemble', function () {
|
|||
expect($postCheck->name)->toBe($newData['name'])
|
||||
->and($postCheck->code)->toBe($newData['code']);
|
||||
});
|
||||
it('allows an administrator to create an ensemble', function () {
|
||||
$event = Event::factory()->create();
|
||||
$name = 'New Ensemble';
|
||||
$code = 'NE';
|
||||
$postData = [
|
||||
'name' => $name,
|
||||
'code' => $code,
|
||||
'event_id' => $event->id,
|
||||
];
|
||||
actAsAdmin();
|
||||
post(route('admin.ensembles.store', $postData))
|
||||
->assertSessionHasNoErrors()
|
||||
->assertRedirect(route('admin.ensembles.index'));
|
||||
$testEnsemble = Ensemble::latest()->get();
|
||||
expect($testEnsemble[0]->name)->toBe($name)
|
||||
->and($testEnsemble[0]->code)->toBe($code)
|
||||
->and($testEnsemble[0]->event_id)->toBe($event->id);
|
||||
});
|
||||
it('assigns the highest rank number to a new ensemble', function () {
|
||||
// Arrange
|
||||
$event1 = Event::factory()->create();
|
||||
$event2 = Event::factory()->create();
|
||||
Ensemble::factory()->create(['event_id' => $event1->id, 'rank' => 1]);
|
||||
Ensemble::factory()->create(['event_id' => $event1->id, 'rank' => 2]);
|
||||
Ensemble::factory()->create(['event_id' => $event1->id, 'rank' => 3]);
|
||||
Ensemble::factory()->create(['event_id' => $event2->id, 'rank' => 1]);
|
||||
Ensemble::factory()->create(['event_id' => $event2->id, 'rank' => 2]);
|
||||
$postData1 = [
|
||||
'name' => fake()->firstName,
|
||||
'code' => fake()->randomLetter.fake()->randomLetter,
|
||||
'event_id' => $event1->id,
|
||||
];
|
||||
$postData2 = [
|
||||
'name' => fake()->firstName,
|
||||
'code' => fake()->randomLetter.fake()->randomLetter,
|
||||
'event_id' => $event2->id,
|
||||
];
|
||||
// Act & Assert
|
||||
actAsAdmin();
|
||||
post(route('admin.ensembles.store', $postData1));
|
||||
$testEnsemble = Ensemble::where('name', $postData1['name'])->get();
|
||||
expect($testEnsemble[0]->rank)->toBe(4);
|
||||
post(route('admin.ensembles.store', $postData2));
|
||||
$testEnsemble = Ensemble::where('name', $postData2['name'])->get();
|
||||
expect($testEnsemble[0]->rank)->toBe(3);
|
||||
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue