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
Metadata
Metadata
Assignees
Labels
No labels