Skip to content

Commit 24560f8

Browse files
author
Яценко Андрей
committed
Add: test empty type
1 parent 1a2cef8 commit 24560f8

File tree

3 files changed

+133
-79
lines changed

3 files changed

+133
-79
lines changed

tests/ClassTransformerTest.php renamed to tests/ClassTransformerFromArrayTest.php

Lines changed: 9 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
use Tests\DTO\UserDTO;
1010
use PHPUnit\Framework\TestCase;
1111
use ClassTransformer\ClassTransformer;
12+
use Tests\DTO\UserEmptyTypeDTO;
1213

1314
/**
1415
* Class ClassTransformerTest
1516
* @package Tests
1617
*/
17-
class ClassTransformerTest extends TestCase
18+
class ClassTransformerFromArrayTest extends TestCase
1819
{
1920
use FakerData;
2021

@@ -95,85 +96,14 @@ public function testTripleRecursiveArray(): void
9596
}
9697
}
9798

98-
99-
public function testBaseObject(): void
100-
{
101-
$data = $this->getBaseObject();
102-
103-
$userDTO = ClassTransformer::transform(UserDTO::class, $data);
104-
105-
self::assertInstanceOf(UserDTO::class, $userDTO);
106-
self::assertEquals($data->id, $userDTO->id);
107-
self::assertEquals($data->email, $userDTO->email);
108-
self::assertEquals($data->balance, $userDTO->balance);
109-
110-
self::assertIsInt($userDTO->id);
111-
self::assertIsString($userDTO->email);
112-
self::assertIsFloat($userDTO->balance);
113-
}
114-
115-
116-
public function testRecursiveObject(): void
99+
public function testEmptyTypeObject(): void
117100
{
118-
$data = $this->getRecursiveObject();
119-
$purchaseDTO = ClassTransformer::transform(PurchaseDTO::class, $data);
120-
121-
self::assertInstanceOf(PurchaseDTO::class, $purchaseDTO);
122-
123-
self::assertInstanceOf(UserDTO::class, $purchaseDTO->user);
124-
self::assertEquals($data->user->id, $purchaseDTO->user->id);
125-
self::assertEquals($data->user->email, $purchaseDTO->user->email);
126-
self::assertEquals($data->user->balance, $purchaseDTO->user->balance);
127-
128-
self::assertIsInt($purchaseDTO->user->id);
129-
self::assertIsString($purchaseDTO->user->email);
130-
self::assertIsFloat($purchaseDTO->user->balance);
131-
132-
foreach ($purchaseDTO->products as $key => $product) {
133-
self::assertInstanceOf(ProductDTO::class, $product);
134-
self::assertEquals($data->products[$key]->id, $product->id);
135-
self::assertEquals($data->products[$key]->name, $product->name);
136-
self::assertEquals($data->products[$key]->price, $product->price);
137-
138-
self::assertIsInt($product->id);
139-
self::assertIsString($product->name);
140-
self::assertIsFloat($product->price);
141-
}
142-
143-
}
144-
145-
146-
public function testTripleRecursiveObject(): void
147-
{
148-
149-
$data = $this->getTripleRecursiveObject();
150-
151-
$basketDTO = ClassTransformer::transform(BasketDTO::class, $data);
152-
153-
foreach ($basketDTO->orders as $key => $purchase) {
154-
155-
self::assertInstanceOf(PurchaseDTO::class, $purchase);
156-
157-
self::assertInstanceOf(UserDTO::class, $purchase->user);
158-
self::assertEquals($data->orders[$key]->user->id, $purchase->user->id);
159-
self::assertEquals($data->orders[$key]->user->email, $purchase->user->email);
160-
self::assertEquals($data->orders[$key]->user->balance, $purchase->user->balance);
161-
162-
self::assertIsInt($purchase->user->id);
163-
self::assertIsString($purchase->user->email);
164-
self::assertIsFloat($purchase->user->balance);
165-
166-
foreach ($purchase->products as $productKey => $product) {
167-
self::assertInstanceOf(ProductDTO::class, $product);
168-
self::assertEquals($data->orders[$key]->products[$productKey]->id, $product->id);
169-
self::assertEquals($data->orders[$key]->products[$productKey]->name, $product->name);
170-
self::assertEquals($data->orders[$key]->products[$productKey]->price, $product->price);
171-
172-
self::assertIsInt($product->id);
173-
self::assertIsString($product->name);
174-
self::assertIsFloat($product->price);
175-
}
176-
}
101+
$data = $this->getBaseArrayData();
177102

103+
$userDTO = ClassTransformer::transform(UserEmptyTypeDTO::class, $data);
104+
self::assertInstanceOf(UserEmptyTypeDTO::class, $userDTO);
105+
self::assertEquals($data['id'], $userDTO->id);
106+
self::assertEquals($data['email'], $userDTO->email);
107+
self::assertEquals($data['balance'], $userDTO->balance);
178108
}
179109
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Tests;
5+
6+
use Tests\DTO\BasketDTO;
7+
use Tests\DTO\ProductDTO;
8+
use Tests\DTO\PurchaseDTO;
9+
use Tests\DTO\UserDTO;
10+
use PHPUnit\Framework\TestCase;
11+
use ClassTransformer\ClassTransformer;
12+
use Tests\DTO\UserEmptyTypeDTO;
13+
14+
/**
15+
* Class ClassTransformerTest
16+
* @package Tests
17+
*/
18+
class ClassTransformerFromObjectTest extends TestCase
19+
{
20+
use FakerData;
21+
22+
public function testBaseObject(): void
23+
{
24+
$data = $this->getBaseObject();
25+
26+
$userDTO = ClassTransformer::transform(UserDTO::class, $data);
27+
28+
self::assertInstanceOf(UserDTO::class, $userDTO);
29+
self::assertEquals($data->id, $userDTO->id);
30+
self::assertEquals($data->email, $userDTO->email);
31+
self::assertEquals($data->balance, $userDTO->balance);
32+
33+
self::assertIsInt($userDTO->id);
34+
self::assertIsString($userDTO->email);
35+
self::assertIsFloat($userDTO->balance);
36+
}
37+
38+
39+
public function testRecursiveObject(): void
40+
{
41+
$data = $this->getRecursiveObject();
42+
$purchaseDTO = ClassTransformer::transform(PurchaseDTO::class, $data);
43+
44+
self::assertInstanceOf(PurchaseDTO::class, $purchaseDTO);
45+
46+
self::assertInstanceOf(UserDTO::class, $purchaseDTO->user);
47+
self::assertEquals($data->user->id, $purchaseDTO->user->id);
48+
self::assertEquals($data->user->email, $purchaseDTO->user->email);
49+
self::assertEquals($data->user->balance, $purchaseDTO->user->balance);
50+
51+
self::assertIsInt($purchaseDTO->user->id);
52+
self::assertIsString($purchaseDTO->user->email);
53+
self::assertIsFloat($purchaseDTO->user->balance);
54+
55+
foreach ($purchaseDTO->products as $key => $product) {
56+
self::assertInstanceOf(ProductDTO::class, $product);
57+
self::assertEquals($data->products[$key]->id, $product->id);
58+
self::assertEquals($data->products[$key]->name, $product->name);
59+
self::assertEquals($data->products[$key]->price, $product->price);
60+
61+
self::assertIsInt($product->id);
62+
self::assertIsString($product->name);
63+
self::assertIsFloat($product->price);
64+
}
65+
66+
}
67+
68+
69+
public function testTripleRecursiveObject(): void
70+
{
71+
72+
$data = $this->getTripleRecursiveObject();
73+
74+
$basketDTO = ClassTransformer::transform(BasketDTO::class, $data);
75+
76+
foreach ($basketDTO->orders as $key => $purchase) {
77+
78+
self::assertInstanceOf(PurchaseDTO::class, $purchase);
79+
80+
self::assertInstanceOf(UserDTO::class, $purchase->user);
81+
self::assertEquals($data->orders[$key]->user->id, $purchase->user->id);
82+
self::assertEquals($data->orders[$key]->user->email, $purchase->user->email);
83+
self::assertEquals($data->orders[$key]->user->balance, $purchase->user->balance);
84+
85+
self::assertIsInt($purchase->user->id);
86+
self::assertIsString($purchase->user->email);
87+
self::assertIsFloat($purchase->user->balance);
88+
89+
foreach ($purchase->products as $productKey => $product) {
90+
self::assertInstanceOf(ProductDTO::class, $product);
91+
self::assertEquals($data->orders[$key]->products[$productKey]->id, $product->id);
92+
self::assertEquals($data->orders[$key]->products[$productKey]->name, $product->name);
93+
self::assertEquals($data->orders[$key]->products[$productKey]->price, $product->price);
94+
95+
self::assertIsInt($product->id);
96+
self::assertIsString($product->name);
97+
self::assertIsFloat($product->price);
98+
}
99+
}
100+
}
101+
102+
public function testEmptyTypeObject(): void
103+
{
104+
$data = $this->getBaseObject();
105+
106+
$userDTO = ClassTransformer::transform(UserEmptyTypeDTO::class, $data);
107+
108+
self::assertInstanceOf(UserEmptyTypeDTO::class, $userDTO);
109+
self::assertEquals($data->id, $userDTO->id);
110+
self::assertEquals($data->email, $userDTO->email);
111+
self::assertEquals($data->balance, $userDTO->balance);
112+
}
113+
}

tests/DTO/UserEmptyTypeDTO.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Tests\DTO;
5+
6+
class UserEmptyTypeDTO
7+
{
8+
public $id;
9+
public $email;
10+
public $balance;
11+
}

0 commit comments

Comments
 (0)