Skip to content

Commit 0b9a4a8

Browse files
wip
1 parent da9e136 commit 0b9a4a8

9 files changed

Lines changed: 165 additions & 27 deletions

File tree

src/Http/Traits/SetsOAuthResources.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Piggy\Api\Resources\OAuth\Loyalty\Rewards\RewardAttributesResource;
2727
use Piggy\Api\Resources\OAuth\Loyalty\Rewards\RewardsResource;
2828
use Piggy\Api\Resources\OAuth\Loyalty\Tokens\LoyaltyTokensResource;
29+
use Piggy\Api\Resources\OAuth\Orders\OrderReturnsResource;
2930
use Piggy\Api\Resources\OAuth\Orders\OrdersResource;
3031
use Piggy\Api\Resources\OAuth\Perks\PerksResource;
3132
use Piggy\Api\Resources\OAuth\PortalSessions\PortalSessionsResource;
@@ -221,6 +222,11 @@ trait SetsOAuthResources
221222
*/
222223
public $orders;
223224

225+
/**
226+
* @var OrderReturnsResource
227+
*/
228+
public $orderReturns;
229+
224230
protected function setResources(BaseClient $client): void
225231
{
226232
$this->contacts = new ContactsResource($client);
@@ -259,5 +265,6 @@ protected function setResources(BaseClient $client): void
259265
$this->products = new ProductsResource($client);
260266
$this->categories = new CategoriesResource($client);
261267
$this->orders = new OrdersResource($client);
268+
$this->orderReturns = new OrderReturnsResource($client);
262269
}
263270
}

src/Http/Traits/SetsRegisterResources.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44

55
use Piggy\Api\Http\BaseClient;
66
use Piggy\Api\Resources\Register\Categories\CategoriesResource;
7-
use Piggy\Api\Resources\Register\Products\ProductsResource;
8-
use Piggy\Api\Resources\Register\Loyalty\Tokens\LoyaltyTokensResource;
97
use Piggy\Api\Resources\Register\ContactIdentifiersResource;
108
use Piggy\Api\Resources\Register\Contacts\ContactsResource;
119
use Piggy\Api\Resources\Register\ContactSubscriptionsResource;
@@ -15,7 +13,11 @@
1513
use Piggy\Api\Resources\Register\Loyalty\Receptions\CreditReceptionsResource;
1614
use Piggy\Api\Resources\Register\Loyalty\Receptions\RewardReceptionsResource;
1715
use Piggy\Api\Resources\Register\Loyalty\Rewards\RewardsResource;
16+
use Piggy\Api\Resources\Register\Loyalty\Tokens\LoyaltyTokensResource;
17+
use Piggy\Api\Resources\Register\Orders\OrderReturnsResource;
18+
use Piggy\Api\Resources\Register\Orders\OrdersResource;
1819
use Piggy\Api\Resources\Register\PrepaidTransactionResource;
20+
use Piggy\Api\Resources\Register\Products\ProductsResource;
1921
use Piggy\Api\Resources\Register\Registers\RegisterResource;
2022
use Piggy\Api\Resources\Register\SubscriptionTypesResource;
2123
use Piggy\Api\Resources\Register\Vouchers\PromotionsResource;
@@ -111,6 +113,16 @@ trait SetsRegisterResources
111113
*/
112114
public $categories;
113115

116+
/**
117+
* @var OrdersResource
118+
*/
119+
public $orders;
120+
121+
/**
122+
* @var OrderReturnsResource
123+
*/
124+
public $orderReturns;
125+
114126
protected function setResources(BaseClient $client): void
115127
{
116128
$this->registers = new RegisterResource($client);
@@ -130,5 +142,7 @@ protected function setResources(BaseClient $client): void
130142
$this->promotion = new PromotionsResource($client);
131143
$this->products = new ProductsResource($client);
132144
$this->categories = new CategoriesResource($client);
145+
$this->orders = new OrdersResource($client);
146+
$this->orderReturns = new OrderReturnsResource($client);
133147
}
134148
}

src/Models/Orders/LineItemReturn.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Piggy\Api\Models\Orders;
44

5+
use stdClass;
6+
57
class LineItemReturn
68
{
79
/**
@@ -15,17 +17,14 @@ class LineItemReturn
1517
protected $quantity;
1618

1719
/**
18-
* @var array<string, mixed>
20+
* @var stdClass
1921
*/
20-
protected $lineItem = [];
22+
protected $lineItem;
2123

22-
/**
23-
* @param array<string, mixed> $lineItem
24-
*/
2524
public function __construct(
2625
string $uuid,
2726
int $quantity,
28-
array $lineItem = []
27+
stdClass $lineItem
2928
)
3029
{
3130
$this->uuid = $uuid;
@@ -50,9 +49,9 @@ public function getQuantity(): int
5049
}
5150

5251
/**
53-
* @return array<string, mixed>
52+
* @return stdClass
5453
*/
55-
public function getLineItem(): array
54+
public function getLineItem(): stdClass
5655
{
5756
return $this->lineItem;
5857
}

src/Models/Orders/OrderReturn.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class OrderReturn
2222
protected $status;
2323

2424
/**
25-
* @var array<string, mixed>
25+
* @var stdClass
2626
*/
27-
protected $order = [];
27+
protected $order;
2828

2929
/**
3030
* @var LineItemReturn[]
@@ -42,14 +42,13 @@ class OrderReturn
4242
const resourceUri = '/api/v3/oauth/clients/order-returns';
4343

4444
/**
45-
* @param array<string, mixed> $order
4645
* @param LineItemReturn[] $lineItemReturns
4746
* @param SubLineItemReturn[] $subLineItemReturns
4847
*/
4948
public function __construct(
5049
string $uuid,
5150
string $status,
52-
array $order = [],
51+
stdClass $order,
5352
array $lineItemReturns = [],
5453
array $subLineItemReturns = []
5554
)
@@ -78,9 +77,9 @@ public function getStatus(): string
7877
}
7978

8079
/**
81-
* @return array<string, mixed>
80+
* @return stdClass
8281
*/
83-
public function getOrder(): array
82+
public function getOrder(): stdClass
8483
{
8584
return $this->order;
8685
}

src/Models/Orders/SubLineItemReturn.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Piggy\Api\Models\Orders;
44

5+
use stdClass;
6+
57
class SubLineItemReturn
68
{
79
/**
@@ -15,17 +17,14 @@ class SubLineItemReturn
1517
protected $quantity;
1618

1719
/**
18-
* @var array<string, mixed>
20+
* @var stdClass
1921
*/
20-
protected $subLineItem = [];
22+
protected $subLineItem;
2123

22-
/**
23-
* @param array<string, mixed> $subLineItem
24-
*/
2524
public function __construct(
2625
string $uuid,
2726
int $quantity,
28-
array $subLineItem = []
27+
stdClass $subLineItem
2928
)
3029
{
3130
$this->uuid = $uuid;
@@ -50,9 +49,9 @@ public function getQuantity(): int
5049
}
5150

5251
/**
53-
* @return array<string, mixed>
52+
* @return stdClass
5453
*/
55-
public function getSubLineItem(): array
54+
public function getSubLineItem(): stdClass
5655
{
5756
return $this->subLineItem;
5857
}

src/Resources/OAuth/Orders/OrderReturns.php renamed to src/Resources/OAuth/Orders/OrderReturnsResource.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Piggy\Api\StaticMappers\Orders\OrderReturnMapper;
99
use stdClass;
1010

11-
class OrderReturns extends BaseResource
11+
class OrderReturnsResource extends BaseResource
1212
{
1313
/**
1414
* @var string

src/Resources/Register/Orders/OrderReturns.php renamed to src/Resources/Register/Orders/OrderReturnsResource.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Piggy\Api\StaticMappers\Orders\OrderReturnMapper;
99
use stdClass;
1010

11-
class OrderReturns extends BaseResource
11+
class OrderReturnsResource extends BaseResource
1212
{
1313
/**
1414
* @var string

src/StaticMappers/Orders/OrderReturnMapper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public static function map(stdClass $data): OrderReturn
1111
{
1212
$lineItemReturns = [];
1313
if (isset($data->line_item_returns)) {
14-
$lineItemReturns = LineItemReturnMapper::map($data->line_item_returns);
14+
$lineItemReturns = LineItemReturnsMapper::map($data->line_item_returns);
1515
}
1616

1717
$subLineItemReturns = [];
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<?php
2+
3+
namespace OAuth\Orders;
4+
5+
use Piggy\Api\Tests\OAuthTestCase;
6+
7+
class OrderReturnsResourceTest extends OAuthTestCase
8+
{
9+
/**
10+
* @test
11+
*/
12+
public function it_can_create_order_returns(): void
13+
{
14+
$this->addExpectedResponse([
15+
'uuid' => '123',
16+
'order' => [
17+
'uuid' => '123',
18+
],
19+
'status' => 'COMPLETED',
20+
'line_item_returns' => [
21+
[
22+
'uuid' => '123',
23+
'line_item' => [
24+
'uuid' => '123',
25+
],
26+
'quantity' => 1,
27+
]
28+
],
29+
'sub_line_item_returns' => []
30+
]);
31+
32+
$return = $this->mockedClient->orderReturns->create([
33+
'external_identifier' => '123',
34+
'status' => 'COMPLETED',
35+
'order' => [
36+
'uuid' => '123',
37+
],
38+
'line_items' => [
39+
[
40+
'uuid' => '123',
41+
'quantity' => 5,
42+
'reason' => 'Broken item'
43+
],
44+
],
45+
]);
46+
47+
$this->assertEquals('123', $return->getUuid());
48+
}
49+
50+
/**
51+
* @test
52+
*/
53+
public function it_can_process_order_returns(): void
54+
{
55+
$this->addExpectedResponse([
56+
'type' => 'points_transaction',
57+
'data' => [
58+
'points' => 40,
59+
'new_balance' => 40,
60+
],
61+
]);
62+
63+
$response = $this->mockedClient->orderReturns->process('123');
64+
65+
$this->assertEquals(40, $response->data->points);
66+
$this->assertEquals(40, $response->data->new_balance);
67+
}
68+
69+
/**
70+
* @test
71+
*/
72+
public function it_can_create_and_process_order_returns(): void
73+
{
74+
$this->addExpectedResponse([
75+
'return' => [
76+
'uuid' => '123',
77+
'order' => [
78+
'uuid' => '123',
79+
],
80+
'status' => 'COMPLETED',
81+
'line_item_returns' => [
82+
[
83+
'uuid' => '123',
84+
'line_item' => [
85+
'uuid' => '123',
86+
],
87+
'quantity' => 1,
88+
]
89+
],
90+
'sub_line_item_returns' => []
91+
],
92+
'result' => [
93+
'type' => 'points_transaction',
94+
'data' => [
95+
'points' => 40,
96+
'new_balance' => 40,
97+
],
98+
]
99+
]);
100+
101+
$response = $this->mockedClient->orderReturns->createAndProcess([
102+
'external_identifier' => '123',
103+
'status' => 'COMPLETED',
104+
'order' => [
105+
'uuid' => '123',
106+
],
107+
'line_items' => [
108+
[
109+
'uuid' => '123',
110+
'quantity' => 5,
111+
'reason' => 'Broken item'
112+
],
113+
],
114+
]);
115+
116+
$this->assertEquals('123', $response['return']->getUuid());
117+
$this->assertEquals(40, $response['result']->data->points);
118+
$this->assertEquals(40, $response['result']->data->new_balance);
119+
}
120+
}

0 commit comments

Comments
 (0)