Skip to content

Commit dc7fcab

Browse files
committed
AC-9244: rest endpoint missing state and status fields
1 parent 2b89989 commit dc7fcab

File tree

1 file changed

+19
-82
lines changed

1 file changed

+19
-82
lines changed

dev/tests/api-functional/testsuite/Magento/Sales/Service/V1/OrderResponseNullKeysTest.php

Lines changed: 19 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -26,39 +26,41 @@
2626
use Magento\TestFramework\TestCase\WebapiAbstract;
2727

2828
/**
29-
* Verifies REST includes "state" and "status" keys as null when DB has NULLs
30-
* for responses affected by Magento\Sales\Plugin\Webapi\OrderResponseNullKeysPlugin.
31-
*
3229
* @magentoDbIsolation disabled
3330
* @magentoAppIsolation enabled
3431
* @magentoAppArea webapi_rest
3532
*/
3633
class OrderResponseNullKeysTest extends WebapiAbstract
3734
{
35+
protected function setUp(): void
36+
{
37+
parent::setUp();
38+
$this->_markTestAsRestOnly();
39+
}
40+
3841
#[
3942
ConfigFixture('payment/checkmo/active', '1'),
4043
ConfigFixture('carriers/flatrate/active', '1'),
4144

4245
DataFixture(ProductFixture::class, [
46+
'type_id' => 'simple',
47+
'attribute_set_id' => 4,
48+
'sku' => 'order-null-keys-simple',
49+
'name' => 'Order Null Keys Simple',
4350
'price' => 10.00,
44-
'quantity_and_stock_status' => ['qty' => 100, 'is_in_stock' => true]
51+
'status' => 1,
52+
'visibility' => 4,
53+
'weight' => 1,
54+
'website_ids' => [1],
55+
'quantity_and_stock_status' => ['qty' => 100, 'is_in_stock' => true],
4556
], as: 'product'),
4657

4758
DataFixture(GuestCartFixture::class, as: 'cart'),
48-
DataFixture(
49-
SetGuestEmailFixture::class,
50-
['cart_id' => '$cart.id$', 'email' => '[email protected]']
51-
),
52-
DataFixture(
53-
AddProductToCartFixture::class,
54-
['cart_id' => '$cart.id$', 'product_id' => '$product.id$', 'qty' => 1]
55-
),
59+
DataFixture(SetGuestEmailFixture::class, ['cart_id' => '$cart.id$', 'email' => '[email protected]']),
60+
DataFixture(AddProductToCartFixture::class, ['cart_id' => '$cart.id$', 'product_id' => '$product.id$', 'qty' => 1]),
5661
DataFixture(SetBillingAddressFixture::class, ['cart_id' => '$cart.id$']),
5762
DataFixture(SetShippingAddressFixture::class, ['cart_id' => '$cart.id$']),
58-
DataFixture(
59-
SetDeliveryMethodFixture::class,
60-
['cart_id' => '$cart.id$', 'carrier_code' => 'flatrate', 'method_code' => 'flatrate']
61-
),
63+
DataFixture(SetDeliveryMethodFixture::class, ['cart_id' => '$cart.id$', 'carrier_code' => 'flatrate', 'method_code' => 'flatrate']),
6264
DataFixture(SetPaymentMethodFixture::class, ['cart_id' => '$cart.id$', 'method' => 'checkmo']),
6365
DataFixture(PlaceOrderFixture::class, ['cart_id' => '$cart.id$'], as: 'order')
6466
]
@@ -78,88 +80,23 @@ public function testGetOrderShowsNullKeys(): void
7880
$result = $this->_webApiCall($serviceInfo);
7981

8082
$this->assertIsArray($result);
81-
$this->assertArrayHasKey('entity_id', $result);
8283
$this->assertSame($orderId, (int)$result['entity_id']);
8384
$this->assertArrayHasKey('state', $result);
8485
$this->assertArrayHasKey('status', $result);
8586
$this->assertNull($result['state']);
8687
$this->assertNull($result['status']);
8788
}
8889

89-
#[
90-
ConfigFixture('payment/checkmo/active', '1'),
91-
ConfigFixture('carriers/flatrate/active', '1'),
92-
93-
DataFixture(ProductFixture::class, [
94-
'price' => 10.00,
95-
'quantity_and_stock_status' => ['qty' => 100, 'is_in_stock' => true]
96-
], as: 'product'),
97-
98-
DataFixture(GuestCartFixture::class, as: 'cart'),
99-
DataFixture(
100-
SetGuestEmailFixture::class,
101-
['cart_id' => '$cart.id$', 'email' => '[email protected]']
102-
),
103-
DataFixture(
104-
AddProductToCartFixture::class,
105-
['cart_id' => '$cart.id$', 'product_id' => '$product.id$', 'qty' => 1]
106-
),
107-
DataFixture(SetBillingAddressFixture::class, ['cart_id' => '$cart.id$']),
108-
DataFixture(SetShippingAddressFixture::class, ['cart_id' => '$cart.id$']),
109-
DataFixture(
110-
SetDeliveryMethodFixture::class,
111-
['cart_id' => '$cart.id$', 'carrier_code' => 'flatrate', 'method_code' => 'flatrate']
112-
),
113-
DataFixture(SetPaymentMethodFixture::class, ['cart_id' => '$cart.id$', 'method' => 'checkmo']),
114-
DataFixture(PlaceOrderFixture::class, ['cart_id' => '$cart.id$'], as: 'order')
115-
]
116-
public function testGetListShowsNullKeysPerItem(): void
117-
{
118-
$order = DataFixtureStorageManager::getStorage()->get('order');
119-
$orderId = (int)$order->getEntityId();
120-
121-
$this->nullifyOrderStateStatus($orderId);
122-
123-
$query = sprintf(
124-
'/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=entity_id'
125-
. '&searchCriteria[filter_groups][0][filters][0][value]=%d'
126-
. '&searchCriteria[filter_groups][0][filters][0][condition_type]=eq',
127-
$orderId
128-
);
129-
$serviceInfo = [
130-
'rest' => [
131-
'resourcePath' => $query,
132-
'httpMethod' => Request::HTTP_METHOD_GET,
133-
],
134-
];
135-
$result = $this->_webApiCall($serviceInfo);
136-
137-
$this->assertIsArray($result);
138-
$this->assertArrayHasKey('items', $result);
139-
$this->assertNotEmpty($result['items']);
140-
$item = $result['items'][0];
141-
142-
$this->assertSame($orderId, (int)$item['entity_id']);
143-
$this->assertArrayHasKey('state', $item);
144-
$this->assertArrayHasKey('status', $item);
145-
$this->assertNull($item['state']);
146-
$this->assertNull($item['status']);
147-
}
148-
14990
private function nullifyOrderStateStatus(int $orderId): void
15091
{
15192
$om = Bootstrap::getObjectManager();
152-
/** @var ResourceConnection $resource */
15393
$resource = $om->get(ResourceConnection::class);
15494
$connection = $resource->getConnection();
15595
$table = $resource->getTableName('sales_order');
15696

15797
$connection->update(
15898
$table,
159-
[
160-
'state' => new Expression('NULL'),
161-
'status' => new Expression('NULL'),
162-
],
99+
['state' => new Expression('NULL'), 'status' => new Expression('NULL')],
163100
['entity_id = ?' => $orderId]
164101
);
165102
}

0 commit comments

Comments
 (0)