Fix: Register participant with no nami member

This commit is contained in:
philipp lang 2024-02-19 23:59:23 +01:00
parent 26ce8637c1
commit 8713f941c1
2 changed files with 31 additions and 1 deletions

View File

@ -7,6 +7,7 @@ use App\Form\Models\Participant;
use App\Member\Member; use App\Member\Member;
use Faker\Generator; use Faker\Generator;
use Generator as LazyGenerator; use Generator as LazyGenerator;
use Illuminate\Validation\Factory;
class NamiField extends Field class NamiField extends Field
{ {
@ -39,7 +40,7 @@ class NamiField extends Field
*/ */
public function getRegistrationRules(Form $form): array public function getRegistrationRules(Form $form): array
{ {
$rules = []; $rules = [$this->key => 'present|array'];
$c = collect($form->getFields()) $c = collect($form->getFields())
->filter(fn ($field) => $field['for_members'] === true) ->filter(fn ($field) => $field['for_members'] === true)
@ -67,6 +68,10 @@ class NamiField extends Field
$rules = []; $rules = [];
$inputMembers = request($this->key); $inputMembers = request($this->key);
if (!is_array($inputMembers)) {
return [];
}
$c = collect($form->getFields()) $c = collect($form->getFields())
->filter(fn ($field) => $field['type'] !== class_basename(static::class)) ->filter(fn ($field) => $field['type'] !== class_basename(static::class))
->filter(fn ($field) => $field['for_members'] === true) ->filter(fn ($field) => $field['for_members'] === true)

View File

@ -400,6 +400,31 @@ class FormRegisterActionTest extends FormTestCase
$this->assertEquals('', $form->participants->get(1)->data['other']); $this->assertEquals('', $form->participants->get(1)->data['other']);
} }
public function testNamiFieldCanBeEmptyArray(): void
{
$this->login()->loginNami();
$form = Form::factory()
->sections([FormtemplateSectionRequest::new()->fields([
$this->namiField('members'),
])])
->create();
$this->register($form, ['members' => []])->assertOk();
$this->assertDatabaseCount('participants', 1);
}
public function testNamiFieldMustBeArray(): void
{
$this->login()->loginNami();
$form = Form::factory()
->sections([FormtemplateSectionRequest::new()->fields([
$this->namiField('members'),
])])
->create();
$this->register($form, ['members' => null])->assertJsonValidationErrors(['members']);
}
/** /**
* @param array<string, mixed> $attributes * @param array<string, mixed> $attributes
*/ */