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