Passed
Pull Request — master (#664)
by Ilya
05:18
created

SalesUnitCartReorderRestApiFixtures   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 157
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 9
eloc 47
c 1
b 0
f 0
dl 0
loc 157
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A getProductPackagingUnitTransfer() 0 3 1
A createOrderWithProductPackagingUnit() 0 19 1
A getProductConcreteTransfer() 0 3 1
A buildFixtures() 0 14 1
A getProductMeasurementSalesUnitTransfer() 0 3 1
A getOrderWithSalesUnit() 0 3 1
A getCustomerTransfer() 0 3 1
A createProductPackagingUnit() 0 13 1
A getProductConcreteTransferWithSalesUnit() 0 3 1
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
declare(strict_types = 1);
9
10
namespace PyzTest\Glue\CartReorder\RestApi\Fixtures;
11
12
use Generated\Shared\DataBuilder\ItemBuilder;
13
use Generated\Shared\Transfer\CustomerTransfer;
14
use Generated\Shared\Transfer\ItemTransfer;
15
use Generated\Shared\Transfer\ProductConcreteTransfer;
16
use Generated\Shared\Transfer\ProductMeasurementSalesUnitTransfer;
17
use Generated\Shared\Transfer\ProductPackagingUnitTransfer;
18
use Generated\Shared\Transfer\ProductPackagingUnitTypeTransfer;
19
use Generated\Shared\Transfer\QuoteTransfer;
20
use Generated\Shared\Transfer\SaveOrderTransfer;
21
use Generated\Shared\Transfer\SpyProductPackagingUnitEntityTransfer;
22
use Generated\Shared\Transfer\StoreTransfer;
23
use PyzTest\Glue\CartReorder\CartReorderApiTester;
24
use SprykerTest\Shared\Testify\Fixtures\FixturesBuilderInterface;
25
use SprykerTest\Shared\Testify\Fixtures\FixturesContainerInterface;
26
27
/**
28
 * Auto-generated group annotations
29
 *
30
 * @group PyzTest
31
 * @group Glue
32
 * @group Carts
33
 * @group RestApi
34
 * @group SalesUnitCartReorderRestApiFixtures
35
 * Add your own group annotations below this line
36
 * @group EndToEnd
37
 */
38
class SalesUnitCartReorderRestApiFixtures implements FixturesBuilderInterface, FixturesContainerInterface
39
{
40
    /**
41
     * @var string
42
     */
43
    protected const TEST_USERNAME = 'ProductPackagingUnitCartReorderRestApiFixtures';
44
45
    /**
46
     * @var string
47
     */
48
    protected const TEST_PRODUCT_PACKAGING_UNIT_TYPE = 'box';
49
50
    /**
51
     * @var \Generated\Shared\Transfer\StoreTransfer
52
     */
53
    protected StoreTransfer $storeTransfer;
54
55
    /**
56
     * @var \Generated\Shared\Transfer\CustomerTransfer
57
     */
58
    protected CustomerTransfer $customerTransfer;
59
60
    /**
61
     * @var \Generated\Shared\Transfer\ProductConcreteTransfer
62
     */
63
    protected ProductConcreteTransfer $productConcreteTransfer;
64
65
    /**
66
     * @var \Generated\Shared\Transfer\ProductConcreteTransfer
67
     */
68
    protected ProductConcreteTransfer $productConcreteTransferWithSalesUnit;
69
70
    /**
71
     * @var \Generated\Shared\Transfer\ProductMeasurementSalesUnitTransfer
72
     */
73
    protected ProductMeasurementSalesUnitTransfer $productMeasurementSalesUnitTransfer;
74
75
    protected ProductPackagingUnitTransfer $productPackagingUnitTransfer;
76
77
    /**
78
     * @var \Generated\Shared\Transfer\SaveOrderTransfer
79
     */
80
    protected SaveOrderTransfer $orderWithSalesUnit;
81
82
    /**
83
     * @return \Generated\Shared\Transfer\CustomerTransfer
84
     */
85
    public function getCustomerTransfer(): CustomerTransfer
86
    {
87
        return $this->customerTransfer;
88
    }
89
90
    /**
91
     * @return \Generated\Shared\Transfer\ProductConcreteTransfer
92
     */
93
    public function getProductConcreteTransfer(): ProductConcreteTransfer
94
    {
95
        return $this->productConcreteTransfer;
96
    }
97
98
    /**
99
     * @return \Generated\Shared\Transfer\ProductConcreteTransfer
100
     */
101
    public function getProductConcreteTransferWithSalesUnit(): ProductConcreteTransfer
102
    {
103
        return $this->productConcreteTransferWithSalesUnit;
104
    }
105
106
    /**
107
     * @return \Generated\Shared\Transfer\ProductMeasurementSalesUnitTransfer
108
     */
109
    public function getProductMeasurementSalesUnitTransfer(): ProductMeasurementSalesUnitTransfer
110
    {
111
        return $this->productMeasurementSalesUnitTransfer;
112
    }
113
114
    /**
115
     * @return \Generated\Shared\Transfer\ProductPackagingUnitTransfer
116
     */
117
    public function getProductPackagingUnitTransfer(): ProductPackagingUnitTransfer
118
    {
119
        return $this->productPackagingUnitTransfer;
120
    }
121
122
    /**
123
     * @return \Generated\Shared\Transfer\SaveOrderTransfer
124
     */
125
    public function getOrderWithSalesUnit(): SaveOrderTransfer
126
    {
127
        return $this->orderWithSalesUnit;
128
    }
129
130
    /**
131
     * @param \PyzTest\Glue\CartReorder\CartReorderApiTester $I
132
     *
133
     * @return \SprykerTest\Shared\Testify\Fixtures\FixturesContainerInterface
134
     */
135
    public function buildFixtures(CartReorderApiTester $I): FixturesContainerInterface
136
    {
137
        $I->configureStateMachine();
138
        $this->storeTransfer = $I->getCurrentStore();
139
        $this->customerTransfer = $I->createCustomer(static::TEST_USERNAME);
140
141
        $this->productConcreteTransfer = $I->createProductWithPriceAndStock($this->storeTransfer);
142
        $this->productConcreteTransferWithSalesUnit = $I->createProductWithPriceAndStock($this->storeTransfer);
143
        $this->productMeasurementSalesUnitTransfer = $I->createProductMeasurementSalesUnit($this->productConcreteTransferWithSalesUnit);
144
        $this->productPackagingUnitTransfer = $this->createProductPackagingUnit($I);
145
146
        $this->orderWithSalesUnit = $this->createOrderWithProductPackagingUnit($I);
147
148
        return $this;
149
    }
150
151
    /**
152
     * @param \PyzTest\Glue\CartReorder\CartReorderApiTester $I
153
     *
154
     * @return \Generated\Shared\Transfer\ProductPackagingUnitTransfer
155
     */
156
    protected function createProductPackagingUnit(CartReorderApiTester $I): ProductPackagingUnitTransfer
157
    {
158
        $productPackagingUnitTypeTransfer = $I->haveProductPackagingUnitType([
159
            ProductPackagingUnitTypeTransfer::NAME => static::TEST_PRODUCT_PACKAGING_UNIT_TYPE,
160
        ]);
161
162
        $productPackagingUnitEntityTransfer = $I->haveProductPackagingUnit([
163
            SpyProductPackagingUnitEntityTransfer::FK_PRODUCT => $this->productConcreteTransferWithSalesUnit->getIdProductConcreteOrFail(),
164
            SpyProductPackagingUnitEntityTransfer::FK_PRODUCT_PACKAGING_UNIT_TYPE => $productPackagingUnitTypeTransfer->getIdProductPackagingUnitTypeOrFail(),
165
            SpyProductPackagingUnitEntityTransfer::FK_LEAD_PRODUCT => $this->productConcreteTransferWithSalesUnit->getIdProductConcreteOrFail(),
166
        ]);
167
168
        return (new ProductPackagingUnitTransfer())->fromArray($productPackagingUnitEntityTransfer->toArray(), true);
169
    }
170
171
    /**
172
     * @param \PyzTest\Glue\CartReorder\CartReorderApiTester $I
173
     *
174
     * @return \Generated\Shared\Transfer\SaveOrderTransfer
175
     */
176
    protected function createOrderWithProductPackagingUnit(CartReorderApiTester $I): SaveOrderTransfer
177
    {
178
        $itemsData = [
179
            (new ItemBuilder([
180
                ItemTransfer::SKU => $this->productConcreteTransfer->getSkuOrFail(),
181
                ItemTransfer::QUANTITY => 1,
182
            ]))->build()->toArray(),
183
            (new ItemBuilder([
184
                ItemTransfer::ID => $this->productConcreteTransferWithSalesUnit->getIdProductConcreteOrFail(),
185
                ItemTransfer::SKU => $this->productConcreteTransferWithSalesUnit->getSkuOrFail(),
186
                ItemTransfer::AMOUNT_SALES_UNIT => $this->productMeasurementSalesUnitTransfer,
187
                ItemTransfer::QUANTITY_SALES_UNIT => $this->productMeasurementSalesUnitTransfer,
188
                ItemTransfer::AMOUNT_LEAD_PRODUCT => $this->productConcreteTransferWithSalesUnit->toArray(),
189
                ItemTransfer::QUANTITY => 2,
190
                ItemTransfer::AMOUNT => 3,
191
            ]))->build()->toArray(),
192
        ];
193
194
        return $I->createOrder($this->customerTransfer, [QuoteTransfer::ITEMS => $itemsData]);
195
    }
196
}
197