Skip to content

Commit f207512

Browse files
committed
Added more tests for base data
1 parent 6e49ae5 commit f207512

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

tests/Dummies/UserData.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace Nuxtifyts\PhpDto\Tests\Dummies;
4+
5+
use Nuxtifyts\PhpDto\Data;
6+
7+
readonly class UserData extends Data
8+
{
9+
public function __construct(
10+
public string $firstName,
11+
public string $lastName
12+
) {
13+
}
14+
}

tests/Dummies/UserLocationData.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace Nuxtifyts\PhpDto\Tests\Dummies;
4+
5+
final readonly class UserLocationData extends UserData
6+
{
7+
public function __construct(
8+
string $firstName,
9+
string $lastName,
10+
public AddressData $address
11+
) {
12+
parent::__construct($firstName, $lastName);
13+
}
14+
}

tests/Unit/Concerns/BaseDataTest.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Nuxtifyts\PhpDto\Tests\Dummies\RefundableItemData;
1717
use Nuxtifyts\PhpDto\Tests\Dummies\UnionMultipleComplexData;
1818
use Nuxtifyts\PhpDto\Tests\Dummies\UnionMultipleTypeData;
19+
use Nuxtifyts\PhpDto\Tests\Dummies\UserLocationData;
1920
use Nuxtifyts\PhpDto\Tests\Dummies\YesOrNoData;
2021
use Nuxtifyts\PhpDto\Tests\Unit\UnitCase;
2122
use Nuxtifyts\PhpDto\Tests\Dummies\PersonData;
@@ -40,6 +41,7 @@
4041
#[UsesClass(AddressData::class)]
4142
#[UsesClass(CountryData::class)]
4243
#[UsesClass(UnionMultipleComplexData::class)]
44+
#[UsesClass(UserLocationData::class)]
4345
final class BaseDataTest extends UnitCase
4446
{
4547
/**
@@ -383,6 +385,50 @@ public static function will_perform_serialization_and_deserialization_data_provi
383385
'radius' => null
384386
]
385387
]
388+
],
389+
],
390+
'User location data' => [
391+
'dtoClass' => UserLocationData::class,
392+
'data' => $data = [
393+
'firstName' => 'John',
394+
'lastName' => 'Doe',
395+
'address' => [
396+
'street' => 'street 4',
397+
'city' => 'city 4',
398+
'state' => 'state 4',
399+
'zip' => 'zip 4',
400+
'country' => [
401+
'name' => 'country name 4',
402+
'code' => 'country code 4'
403+
],
404+
'coordinates' => [
405+
'latitude' => 42.42,
406+
'longitude' => 24.24
407+
]
408+
]
409+
],
410+
'expectedProperties' => [
411+
'firstName' => 'John',
412+
'lastName' => 'Doe',
413+
'address' => new AddressData(
414+
'street 4',
415+
'city 4',
416+
'state 4',
417+
'zip 4',
418+
new CountryData('country code 4', 'country name 4'),
419+
new CoordinatesData(42.42, 24.24)
420+
)
421+
],
422+
'expectedSerializedData' => [
423+
...$data,
424+
'address' => [
425+
...$data['address'],
426+
'coordinates' => [
427+
'latitude' => 42.42,
428+
'longitude' => 24.24,
429+
'radius' => null
430+
]
431+
]
386432
]
387433
]
388434
];

0 commit comments

Comments
 (0)