refactor rules out of DataObject

This commit is contained in:
icefox 2026-02-19 15:34:33 -03:00
parent 77d1aebc0a
commit 74f151df07
No known key found for this signature in database
5 changed files with 115 additions and 93 deletions

View file

@ -2,6 +2,8 @@
namespace Tests;
use Icefox\DTO\Log;
use Icefox\DTO\Support\RuleFactory;
use Illuminate\Validation\ValidationException;
use Tests\Classes\ArrayDataObject;
use Tests\Classes\CollectionDataObject;
@ -14,7 +16,7 @@ use Tests\Classes\WithMapperObject;
describe('primitive data test', function () {
it('creates required rules', function () {
$rules = PrimitiveData::getRules();
$rules = (new RuleFactory(new Log()))->make(PrimitiveData::class);
expect($rules)->toMatchArray([
'string' => ['required'],
'int' => ['required', 'numeric'],
@ -40,7 +42,7 @@ describe('primitive data test', function () {
describe('optional data', function () {
it('creates optional rules', function () {
$rules = OptionalData::getRules();
$rules = (new RuleFactory(new Log()))->make(OptionalData::class);
expect($rules)->toMatchArray([
'string' => ['sometimes'],
'int' => ['sometimes', 'numeric'],
@ -61,7 +63,7 @@ describe('optional data', function () {
describe('nullable data', function () {
it('creates nullable rules', function () {
$rules = OptionalNullableData::getRules();
$rules = (new RuleFactory(new Log()))->make(OptionalNullableData::class);
expect($rules)->toMatchArray([
'string' => ['required'],
'int' => ['nullable', 'numeric'],
@ -91,7 +93,7 @@ describe('nullable data', function () {
describe('reference other DataObject', function () {
it('creates recursive rules', function () {
$rules = RecursiveDataObject::getRules();
$rules = (new RuleFactory(new Log()))->make(RecursiveDataObject::class);
expect($rules)->toMatchArray([
'string' => ['required'],
'extra.string' => ['required'],
@ -104,7 +106,7 @@ describe('reference other DataObject', function () {
describe('primitive array', function () {
it('creates array rules', function () {
$rules = ArrayDataObject::getRules();
$rules = (new RuleFactory(new Log()))->make(ArrayDataObject::class);
expect($rules)->toMatchArray([
'values' => ['required', 'array'],
'values.*' => ['required', 'numeric'],
@ -115,7 +117,7 @@ describe('primitive array', function () {
describe('object array', function () {
it('creates array rules', function () {
$rules = CollectionDataObject::getRules();
$rules = (new RuleFactory(new Log()))->make(CollectionDataObject::class);
expect($rules)->toMatchArray([
'values' => ['required', 'array'],
'values.*' => ['required'],
@ -131,7 +133,7 @@ describe('can map input names', function () {
it('creates rules with property names', function () {
$rules = FromInputObject::getRules();
$rules = (new RuleFactory(new Log()))->make(FromInputObject::class);
expect($rules)->toMatchArray([
'text' => ['required' ],
'standard' => ['required', 'numeric'],