Skip to content

Commit 0a9148c

Browse files
committed
fixed testcase
1 parent 153db0b commit 0a9148c

File tree

2 files changed

+106
-1
lines changed

2 files changed

+106
-1
lines changed

app/code/Magento/CatalogGraphQl/DataProvider/Product/SearchCriteriaBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ private function addEntityIdSort(SearchCriteriaInterface $searchCriteria): void
159159
{
160160
$sortOrderArray = $searchCriteria->getSortOrders();
161161
$sortDir = SortOrder::SORT_DESC;
162-
if (count($sortOrderArray) > 0) {
162+
if (is_array($sortOrderArray) && count($sortOrderArray) > 0) {
163163
$sortOrder = end($sortOrderArray);
164164
// in the case the last sort order is by position, sort IDs in descendent order
165165
$sortDir = $sortOrder->getField() === EavAttributeInterface::POSITION
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
use Magento\Bundle\Model\Option;
8+
use Magento\Catalog\Model\Product;
9+
use Magento\Sales\Model\Order;
10+
use Magento\Sales\Model\Order\Address;
11+
use Magento\Sales\Model\Order\Item;
12+
use Magento\Sales\Model\Order\Payment;
13+
use Magento\Store\Model\StoreManagerInterface;
14+
use Magento\TestFramework\Helper\Bootstrap;
15+
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
16+
17+
Resolver::getInstance()->requireDataFixture('Magento/Bundle/_files/product_with_multiple_options_with_price.php');
18+
19+
$objectManager = Bootstrap::getObjectManager();
20+
21+
$addressData = include __DIR__ . '/../../../Magento/Sales/_files/address_data.php';
22+
23+
24+
$billingAddress = $objectManager->create(Address::class, ['data' => $addressData]);
25+
$billingAddress->setAddressType('billing');
26+
27+
$shippingAddress = clone $billingAddress;
28+
$shippingAddress->setId(null)->setAddressType('shipping');
29+
30+
$payment = $objectManager->create(Payment::class);
31+
$payment->setMethod('checkmo');
32+
33+
/** @var $product Product */
34+
$product = $objectManager->create(Product::class);
35+
$product->load(3);
36+
37+
/** @var $typeInstance \Magento\Bundle\Model\Product\Type */
38+
$typeInstance = $product->getTypeInstance();
39+
$typeInstance->setStoreFilter($product->getStoreId(), $product);
40+
41+
$optionCollection = $typeInstance->getOptionsCollection($product);
42+
43+
/** @var $storeManager StoreManagerInterface */
44+
$storeManager = $objectManager->get(StoreManagerInterface::class);
45+
$storeCurrency = $storeManager->getWebsite()->getDefaultStore()->getDefaultCurrency()->getCode();
46+
47+
$bundleOptions = $bundleOptionsQty = [];
48+
foreach ($optionCollection as $option) {
49+
/** @var $option Option */
50+
$selectionsCollection = $typeInstance->getSelectionsCollection([$option->getId()], $product);
51+
$bundleOptions[$option->getId()] = $option->isMultiSelection() ?
52+
array_column($selectionsCollection->toArray(), 'selection_id') :
53+
$selectionsCollection->getFirstItem()->getSelectionId();
54+
$bundleOptionsQty[$option->getId()] = 1;
55+
}
56+
57+
$requestInfo = [
58+
'product' => $product->getId(),
59+
'bundle_option' => $bundleOptions,
60+
'bundle_option_qty' => $bundleOptionsQty,
61+
'qty' => 1,
62+
'custom_price' => 300,
63+
];
64+
65+
/** @var Item $orderItem */
66+
$orderItem = $objectManager->create(Item::class);
67+
$orderItem->setProductId($product->getId());
68+
$orderItem->setQtyOrdered(1);
69+
$orderItem->setBasePrice($product->getPrice());
70+
$orderItem->setPrice($product->getPrice());
71+
$orderItem->setRowTotal($product->getPrice());
72+
$orderItem->setProductType($product->getTypeId());
73+
$orderItem->setProductOptions([
74+
'info_buyRequest' => $requestInfo,
75+
'bundle_options' => [
76+
[
77+
'value' => [
78+
['title' => $product->getName()]
79+
],
80+
],
81+
],
82+
'bundle_selection_attributes' => '{"qty":5,"price":99}'
83+
]);
84+
85+
/** @var Order $order */
86+
$order = $objectManager->create(Order::class);
87+
$order->setOrderCurrencyCode($storeCurrency);
88+
$order->setIncrementId('100000001');
89+
$order->setState(Order::STATE_NEW);
90+
$order->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_NEW));
91+
$order->setCustomerIsGuest(true);
92+
$order->setCustomerEmail('customer@null.com');
93+
$order->setCustomerFirstname('firstname');
94+
$order->setCustomerLastname('lastname');
95+
$order->setBillingAddress($billingAddress);
96+
$order->setShippingAddress($shippingAddress);
97+
$order->setAddresses([$billingAddress, $shippingAddress]);
98+
$order->setPayment($payment);
99+
$order->addItem($orderItem);
100+
101+
$order->setStoreId($objectManager->get(StoreManagerInterface::class)->getStore()->getId());
102+
$order->setSubtotal(100);
103+
$order->setBaseSubtotal(100);
104+
$order->setBaseGrandTotal(100);
105+
$order->save();

0 commit comments

Comments
 (0)