It seems like the error message or validation rule key that Filament uses for requiredIf validation failures might have changed in the newer version. The assertHasFormErrors method expects the exact error message or rule that is used when the validation fails.
Here's what you can do to fix this:
- Check the release notes or upgrade guide for Filament 3.1 to see if there are any breaking changes related to validation or error messages.
- Instead of asserting the specific rule
requiredIf, you can assert the presence of any error on the fields. This way, you are not dependent on the specific error message or rule key.
Here's how you can modify your tests:
// If company, company is required
Livewire::test(CustomerResource\Pages\EditCustomer::class, [
'record' => $customer->getRouteKey(),
])
->fillForm([
'company_type' => 'company',
'company' => null,
'firstname' => null,
'lastname' => null,
])
->call('save')
->assertHasErrors([
'company' => 'required',
]);
// If person, firstname and lastname are required
Livewire::test(CustomerResource\Pages\EditCustomer::class, [
'record' => $customer->getRouteKey(),
])
->fillForm([
'company_type' => 'person',
'company' => null,
'firstname' => null,
'lastname' => null,
])
->call('save')
->assertHasErrors([
'firstname' => 'required',
'lastname' => 'required',
]);
In the above code, I've changed assertHasFormErrors to assertHasErrors and used the general 'required' rule instead of 'requiredIf'. This should work regardless of the specific error message or rule key used by Filament.
Remember to check the actual validation rules applied in your Livewire component to ensure that 'required' is indeed the rule that is failing. If Filament uses a different rule or message key, you should use that instead.