FilamentF
Filament16mo ago
Willy

Testing Repeater

I'm testing a repeater, and for some reason I get a distinct validation error.

it('should show an error when the email is duplicated in the form', function () {
        Repeater::fake();

        actingAs(User::factory()->create());

        $team = Team::factory()->create();
        Filament::setTenant($team);

        livewire(Members::class)
            ->fillForm([
                'emailAddresses' => [
                    ['email' => 'duplicated@mail.com'],
                    ['email' => 'duplicated@mail.com'],
                ],
            ])
            ->call('create')
            ->assertHasFormErrors([
                'emailAddresses.0.email' => 'distinct',
                'emailAddresses.1.email' => 'distinct',
            ]);
    });


Repeater::make('emailAddresses')
                            ->label(__('filament/clusters/settings/pages/team/members.form.repeater.label'))
                            ->minItems(1)
                            ->maxItems(5)
                            ->defaultItems(1)
                            ->deletable(fn($state) => is_array($state) && count($state) > 1)
                            ->reorderable(false)
                            ->addActionLabel(__('filament/clusters/settings/pages/team/members.form.repeater.addActionLabel'))
                            ->simple(
                                TextInput::make('email')
                                    ->required()
                                    ->placeholder('example@mail.com')
                                    ->email()
                                    ->distinct()
                                    ->unique(Invitation::class),
                            ),
Was this page helpful?