Issues (3641)

MerchantProductOfferWishlistRestApiFacadeTest.php (2 issues)

1
<?php
2
3
/**
4
 * Copyright © 2016-present Spryker Systems GmbH. All rights reserved.
5
 * Use of this software requires acceptance of the Spryker Marketplace License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerTest\Zed\MerchantProductOfferWishlistRestApi\Business;
9
10
use ArrayObject;
11
use Codeception\Test\Unit;
12
use Generated\Shared\Transfer\ProductConcreteTransfer;
13
use Generated\Shared\Transfer\ProductOfferTransfer;
14
use Generated\Shared\Transfer\WishlistItemRequestTransfer;
15
use Generated\Shared\Transfer\WishlistItemTransfer;
16
use Generated\Shared\Transfer\WishlistTransfer;
17
use Orm\Zed\Wishlist\Persistence\SpyWishlistItemQuery;
18
19
/**
20
 * Auto-generated group annotations
21
 *
22
 * @group SprykerTest
23
 * @group Zed
24
 * @group MerchantProductOfferWishlistRestApi
25
 * @group Business
26
 * @group Facade
27
 * @group MerchantProductOfferWishlistRestApiFacadeTest
28
 * Add your own group annotations below this line
29
 */
30
class MerchantProductOfferWishlistRestApiFacadeTest extends Unit
31
{
32
    /**
33
     * @var \SprykerTest\Zed\MerchantProductOfferWishlistRestApi\MerchantProductOfferWishlistRestApiBusinessTester
34
     */
35
    protected $tester;
36
37
    /**
38
     * @return void
39
     */
40
    public function testDeleteWishlistItemSuccess(): void
41
    {
42
        // Arrange
43
        $wishlistItemCount = (new SpyWishlistItemQuery())
44
            ->count();
45
        $customerTransfer = $this->tester->haveCustomer();
46
        $merchantTransfer = $this->tester->haveMerchant();
47
        $productConcreteTransfer = $this->tester->haveProduct([
48
            ProductConcreteTransfer::IS_ACTIVE => true,
49
        ]);
50
        $productOfferTransfer = $this->tester->haveProductOffer([
51
            ProductOfferTransfer::FK_MERCHANT => $merchantTransfer->getIdMerchant(),
52
            ProductOfferTransfer::CONCRETE_SKU => $productConcreteTransfer->getSku(),
53
            ProductOfferTransfer::ID_PRODUCT_CONCRETE => $productConcreteTransfer->getIdProductConcrete(),
54
        ]);
55
        $wishlistTransfer = $this->tester->haveWishlist([
56
            WishlistTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
57
        ]);
58
        $wishlistItemTransfer = $this->tester->haveItemInWishlist([
59
            WishlistItemTransfer::FK_WISHLIST => $wishlistTransfer->getIdWishlist(),
60
            WishlistItemTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
61
            WishlistItemTransfer::SKU => $productOfferTransfer->getConcreteSku(),
62
            WishlistItemTransfer::WISHLIST_NAME => $wishlistTransfer->getName(),
63
            WishlistItemTransfer::PRODUCT_OFFER_REFERENCE => $productOfferTransfer->getProductOfferReference(),
64
        ]);
65
66
        $wishlistItemRequestTransfer = (new WishlistItemRequestTransfer())
67
            ->setProductOfferReference($productOfferTransfer->getProductOfferReference())
68
            ->setIdCustomer($customerTransfer->getIdCustomer())
69
            ->setSku($wishlistItemTransfer->getSku())
70
            ->setUuid($wishlistItemTransfer->getSku() . '_' . $productOfferTransfer->getProductOfferReference())
71
            ->setUuidWishlist($wishlistTransfer->getUuid());
72
        $wishlistItemTransfers = new ArrayObject([$wishlistItemTransfer]);
73
74
        // Act
75
        $this->tester->getFacade()->deleteWishlistItem(
76
            $wishlistItemRequestTransfer,
77
            $wishlistItemTransfers,
78
        );
79
80
        $expectedWishlistItemCount = (new SpyWishlistItemQuery())
81
            ->count();
82
83
        // Assert
84
        $this->assertSame($wishlistItemCount, $expectedWishlistItemCount);
85
    }
86
87
    /**
88
     * @return void
89
     */
90
    public function testDeleteWishlistItemWithWrongSkuNotDeleted(): void
91
    {
92
        // Arrange
93
        $wishlistItemCount = (new SpyWishlistItemQuery())
94
            ->count();
95
        $customerTransfer = $this->tester->haveCustomer();
96
        $merchantTransfer = $this->tester->haveMerchant();
97
        $productConcreteTransfer = $this->tester->haveProduct([
98
            ProductConcreteTransfer::IS_ACTIVE => true,
99
        ]);
100
        $productOfferTransfer = $this->tester->haveProductOffer([
101
            ProductOfferTransfer::FK_MERCHANT => $merchantTransfer->getIdMerchant(),
102
            ProductOfferTransfer::CONCRETE_SKU => $productConcreteTransfer->getSku(),
103
            ProductOfferTransfer::ID_PRODUCT_CONCRETE => $productConcreteTransfer->getIdProductConcrete(),
104
        ]);
105
        $wishlistTransfer = $this->tester->haveWishlist([
106
            WishlistTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
107
        ]);
108
        $wishlistItemTransfer = $this->tester->haveItemInWishlist([
109
            WishlistItemTransfer::FK_WISHLIST => $wishlistTransfer->getIdWishlist(),
110
            WishlistItemTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
111
            WishlistItemTransfer::SKU => $productOfferTransfer->getConcreteSku(),
112
            WishlistItemTransfer::WISHLIST_NAME => $wishlistTransfer->getName(),
113
            WishlistItemTransfer::PRODUCT_OFFER_REFERENCE => $productOfferTransfer->getProductOfferReference(),
114
        ]);
115
116
        $wishlistItemRequestTransfer = (new WishlistItemRequestTransfer())
117
            ->setProductOfferReference($productOfferTransfer->getProductOfferReference())
118
            ->setIdCustomer($customerTransfer->getIdCustomer())
119
            ->setSku('test2')
120
            ->setUuid('test2' . '_' . $productOfferTransfer->getProductOfferReference())
121
            ->setUuidWishlist($wishlistTransfer->getUuid());
122
        $wishlistItemTransfers = new ArrayObject([$wishlistItemTransfer]);
123
124
        // Act
125
        $this->tester->getFacade()->deleteWishlistItem(
126
            $wishlistItemRequestTransfer,
127
            $wishlistItemTransfers,
128
        );
129
130
        $expectedWishlistItemCount = (new SpyWishlistItemQuery())
131
            ->count();
132
133
        // Assert
134
        $this->assertSame($wishlistItemCount + 1, $expectedWishlistItemCount);
135
    }
136
137
    /**
138
     * @return void
139
     */
140
    public function testDeleteWishlistItemWithWrongProductOfferReferenceNotDeleted(): void
141
    {
142
        // Arrange
143
        $wishlistItemCount = (new SpyWishlistItemQuery())
144
            ->count();
145
        $customerTransfer = $this->tester->haveCustomer();
146
        $merchantTransfer = $this->tester->haveMerchant();
147
        $productConcreteTransfer = $this->tester->haveProduct([
148
            ProductConcreteTransfer::IS_ACTIVE => true,
149
        ]);
150
        $productOfferTransfer = $this->tester->haveProductOffer([
151
            ProductOfferTransfer::FK_MERCHANT => $merchantTransfer->getIdMerchant(),
152
            ProductOfferTransfer::CONCRETE_SKU => $productConcreteTransfer->getSku(),
153
            ProductOfferTransfer::ID_PRODUCT_CONCRETE => $productConcreteTransfer->getIdProductConcrete(),
154
        ]);
155
        $wishlistTransfer = $this->tester->haveWishlist([
156
            WishlistTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
157
        ]);
158
        $wishlistItemTransfer = $this->tester->haveItemInWishlist([
159
            WishlistItemTransfer::FK_WISHLIST => $wishlistTransfer->getIdWishlist(),
160
            WishlistItemTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
161
            WishlistItemTransfer::SKU => $productOfferTransfer->getConcreteSku(),
162
            WishlistItemTransfer::WISHLIST_NAME => $wishlistTransfer->getName(),
163
            WishlistItemTransfer::PRODUCT_OFFER_REFERENCE => $productOfferTransfer->getProductOfferReference(),
164
        ]);
165
166
        $wishlistItemRequestTransfer = (new WishlistItemRequestTransfer())
167
            ->setProductOfferReference($productOfferTransfer->getProductOfferReference())
168
            ->setIdCustomer($customerTransfer->getIdCustomer())
169
            ->setSku($wishlistItemTransfer->getSku())
170
            ->setUuid($wishlistItemTransfer->getSku() . '_' . 'test_offer_reference')
171
            ->setUuidWishlist($wishlistTransfer->getUuid());
172
        $wishlistItemTransfers = new ArrayObject([$wishlistItemTransfer]);
173
174
        // Act
175
        $this->tester->getFacade()->deleteWishlistItem(
176
            $wishlistItemRequestTransfer,
177
            $wishlistItemTransfers,
178
        );
179
180
        $expectedWishlistItemCount = (new SpyWishlistItemQuery())
181
            ->count();
182
183
        // Assert
184
        $this->assertSame($wishlistItemCount + 1, $expectedWishlistItemCount);
185
    }
186
187
    /**
188
     * @return void
189
     */
190
    public function testDeleteWishlistItemWithoutProductOfferSuccess(): void
191
    {
192
        // Arrange
193
        $wishlistItemCount = (new SpyWishlistItemQuery())
194
            ->count();
195
        $customerTransfer = $this->tester->haveCustomer();
196
        $merchantTransfer = $this->tester->haveMerchant();
0 ignored issues
show
The assignment to $merchantTransfer is dead and can be removed.
Loading history...
197
        $productConcreteTransfer = $this->tester->haveProduct([
198
            ProductConcreteTransfer::IS_ACTIVE => true,
199
        ]);
200
        $wishlistTransfer = $this->tester->haveWishlist([
201
            WishlistTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
202
        ]);
203
        $wishlistItemTransfer = $this->tester->haveItemInWishlist([
204
            WishlistItemTransfer::FK_WISHLIST => $wishlistTransfer->getIdWishlist(),
205
            WishlistItemTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
206
            WishlistItemTransfer::SKU => $productConcreteTransfer->getSku(),
207
            WishlistItemTransfer::WISHLIST_NAME => $wishlistTransfer->getName(),
208
            WishlistItemTransfer::PRODUCT_OFFER_REFERENCE => null,
209
        ]);
210
211
        $wishlistItemRequestTransfer = (new WishlistItemRequestTransfer())
212
            ->setIdCustomer($customerTransfer->getIdCustomer())
213
            ->setSku($wishlistItemTransfer->getSku())
214
            ->setUuid($wishlistItemTransfer->getSku())
215
            ->setUuidWishlist($wishlistTransfer->getUuid());
216
        $wishlistItemTransfers = new ArrayObject([$wishlistItemTransfer]);
217
218
        // Act
219
        $this->tester->getFacade()->deleteWishlistItemWithoutProductOffer(
220
            $wishlistItemRequestTransfer,
221
            $wishlistItemTransfers,
222
        );
223
224
        $expectedWishlistItemCount = (new SpyWishlistItemQuery())
225
            ->count();
226
227
        // Assert
228
        $this->assertSame($wishlistItemCount, $expectedWishlistItemCount);
229
    }
230
231
    /**
232
     * @return void
233
     */
234
    public function testDeleteWishlistItemWithoutProductOfferWithWrongSkuNotDeleted(): void
235
    {
236
        // Arrange
237
        $wishlistItemCount = (new SpyWishlistItemQuery())
238
            ->count();
239
        $customerTransfer = $this->tester->haveCustomer();
240
        $merchantTransfer = $this->tester->haveMerchant();
0 ignored issues
show
The assignment to $merchantTransfer is dead and can be removed.
Loading history...
241
        $productConcreteTransfer = $this->tester->haveProduct([
242
            ProductConcreteTransfer::IS_ACTIVE => true,
243
        ]);
244
        $wishlistTransfer = $this->tester->haveWishlist([
245
            WishlistTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
246
        ]);
247
        $wishlistItemTransfer = $this->tester->haveItemInWishlist([
248
            WishlistItemTransfer::FK_WISHLIST => $wishlistTransfer->getIdWishlist(),
249
            WishlistItemTransfer::FK_CUSTOMER => $customerTransfer->getIdCustomer(),
250
            WishlistItemTransfer::SKU => $productConcreteTransfer->getSku(),
251
            WishlistItemTransfer::WISHLIST_NAME => $wishlistTransfer->getName(),
252
        ]);
253
254
        $wishlistItemRequestTransfer = (new WishlistItemRequestTransfer())
255
            ->setIdCustomer($customerTransfer->getIdCustomer())
256
            ->setSku('test2')
257
            ->setUuid('test2')
258
            ->setUuidWishlist($wishlistTransfer->getUuid());
259
        $wishlistItemTransfers = new ArrayObject([$wishlistItemTransfer]);
260
261
        // Act
262
        $this->tester->getFacade()->deleteWishlistItemWithoutProductOffer(
263
            $wishlistItemRequestTransfer,
264
            $wishlistItemTransfers,
265
        );
266
267
        $expectedWishlistItemCount = (new SpyWishlistItemQuery())
268
            ->count();
269
270
        // Assert
271
        $this->assertSame($wishlistItemCount + 1, $expectedWishlistItemCount);
272
    }
273
}
274