wip flattening

This commit is contained in:
icefox 2026-02-19 16:38:35 -03:00
parent 74f151df07
commit d83a324eb0
No known key found for this signature in database
5 changed files with 64 additions and 23 deletions

View file

@ -0,0 +1,12 @@
<?php
namespace Tests\Flattening\Classes;
use Icefox\DTO\Attributes\Flat;
use Icefox\DTO\DataObject;
class BasicRoot
{
use DataObject;
public function __construct(public string $text, #[Flat] public RequiredLeaf $leaf) {}
}

View file

@ -0,0 +1,12 @@
<?php
namespace Tests\Flattening\Classes;
use Icefox\DTO\DataObject;
class RequiredLeaf
{
use DataObject;
public function __construct(public int $value) {}
}

View file

@ -0,0 +1,18 @@
<?php
namespace Tests\Flattening;
use Icefox\DTO\Log;
use Icefox\DTO\Support\RuleFactory;
use Tests\Flattening\Classes\BasicRoot;
describe('flattens required parameters', function () {
it('generates correct rules', function () {
$rules = (new RuleFactory(new Log()))->make(BasicRoot::class);
expect($rules)->toMatchArray([
'text' => ['required'],
'value' => ['required', 'numeric'],
]);
});
});

View file

@ -15,7 +15,7 @@ use Tests\Rules\WithOverwriteRules;
describe('rules array shape', function () {
it('returns inferred rules shape from RuleFactory::infer (inferred only)', function () {
$parameters = ReflectionHelper::getParametersMeta(WithMergedRules::class);
$rules = RuleFactory::infer($parameters, '');
$rules = RuleFactory::infer($parameters, '', '');
expect($rules)->toBe([
'value' => ['required', 'numeric'],
@ -24,7 +24,7 @@ describe('rules array shape', function () {
it('returns inferred rules shape regardless of OverwriteRules attribute', function () {
$parameters = ReflectionHelper::getParametersMeta(WithOverwriteRules::class);
$rules = RuleFactory::infer($parameters, '');
$rules = RuleFactory::infer($parameters, '', '');
expect($rules)->toBe([
'value' => ['required', 'numeric'],