generated from spatie/package-skeleton-laravel
-
-
Notifications
You must be signed in to change notification settings - Fork 259
Open
Description
✏️ Describe the bug
If you make a property of a Data of type bool, then the Required auto rule will not be applied to it.
↪️ To Reproduce
use Illuminate\Validation\ValidationException;
use Spatie\LaravelData\Attributes\Validation\Required;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Exceptions\CannotCreateData;
it('successfully validated', function () {
class SomeData1 extends Data
{
public function __construct(
public string $just_string,
public bool $i_am_bool,
) {
}
}
$payload = ['just_string' => fake()->text()];
$validated = SomeData1::validate($payload);
expect($validated['just_string'])->toEqual($payload['just_string']);
});
it('validated, but not created', function () {
class SomeData2 extends Data
{
public function __construct(
public string $just_string,
public bool $i_am_bool,
) {
}
}
SomeData2::validateAndCreate(['just_string' => fake()->text()]);
})->throws(CannotCreateData::class);
it('fail validation', function () {
class SomeData3 extends Data
{
public function __construct(
public string $just_string,
#[Required]
public bool $i_am_bool,
) {
}
}
SomeData3::validateAndCreate(['just_string' => fake()->text()]);
})->throws(ValidationException::class);✅ Expected behavior
I expect that I won't have to manually add the Required attribute
🖥️ Versions
Laravel: 10.46.0
Laravel Data: 4.2.0
PHP: 8.3.1
The problem is here
laravel-data/src/RuleInferrers/RequiredRuleInferrer.php
Lines 38 to 40 in 6e20d6f
| if ($rules->hasType(BooleanType::class)) { | |
| return false; | |
| } |
zakhar-huzenko and Uskrai
Metadata
Metadata
Assignees
Labels
No labels