magento2-docker/dev/tests/integration/testsuite/Magento/Backend/Model/Search/OrderTest.php

136 lines
4.7 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Backend\Model\Search;
use Magento\TestFramework\Helper\Bootstrap;
/**
* @magentoAppArea adminhtml
* @magentoDataFixture Magento/Sales/_files/order.php
* @magentoDataFixture Magento/Sales/_files/order_shipping_address_different_to_billing.php
*/
class OrderTest extends \PHPUnit\Framework\TestCase
{
/**
* @dataProvider loadDataProvider
*/
public function testLoad($query, $limit, $start, $expectedResult)
{
/** @var $order \Magento\Sales\Model\Order */
$order = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\Sales\Model\Order::class);
$orderIdByIncrementId = [];
foreach (['100000001', '100000002', '100000003'] as $incrementId) {
$orderIdByIncrementId[$incrementId] = $order->loadByIncrementId($incrementId)->getId();
}
/** Preconditions */
$objectManager = Bootstrap::getObjectManager();
/** @var \Magento\Backend\Model\Search\Order $orderSearch */
$orderSearch = $objectManager->create(\Magento\Backend\Model\Search\Order::class);
$orderSearch->setQuery($query);
$orderSearch->setLimit($limit);
$orderSearch->setStart($start);
$orderSearch->load();
/** SUT Execution */
$searchResults = $orderSearch->getResults();
/** Ensure that search results are correct */
$this->assertCount(count($expectedResult), $searchResults, 'Quantity of search result items is invalid.');
foreach ($expectedResult as $itemIndex => $expectedItem) {
/** Validate URL to item */
$orderIncrementId = substr($expectedItem['id'], strlen('order/1/#'));
$this->assertStringContainsString(
"order/view/order_id/{$orderIdByIncrementId[$orderIncrementId]}",
$searchResults[$itemIndex]['url'],
'Item URL is invalid.'
);
$expectedItem['id'] = 'order/1/' . $orderIdByIncrementId[$orderIncrementId];
unset($searchResults[$itemIndex]['url']);
/** Validate other item data */
foreach ($expectedItem as $field => $value) {
$this->assertEquals(
$value,
(string)$searchResults[$itemIndex][$field],
"Data of item #$itemIndex is invalid."
);
}
}
}
public static function loadDataProvider()
{
return [
'All items, first page' => [
'10000000',
2, // Items on page
1, // Page number
[
[
'id' => 'order/1/#100000001',
'type' => 'Order',
'name' => 'Order #100000001',
'description' => 'firstname lastname',
],
[
'id' => 'order/1/#100000002',
'type' => 'Order',
'name' => 'Order #100000002',
'description' => 'guest guest'
]
],
],
'All items, second page' => [
'10000000',
2, // Items on page
2, // Page number
[
[
'id' => 'order/1/#100000003',
'type' => 'Order',
'name' => 'Order #100000003',
'description' => 'guest guest',
]
],
],
'Search by first name, first item only' => [
'First',
10, // Items on page
1, // Page number
[
[
'id' => 'order/1/#100000001',
'type' => 'Order',
'name' => 'Order #100000001',
'description' => 'firstname lastname',
]
],
],
'No results' => [
'NotExistingOrder',
10, // Items on page
1, // Page number
[],
],
'Search by last name, first item only' => [
'last',
10, // Items on page
1, // Page number
[
[
'id' => 'order/1/#100000001',
'type' => 'Order',
'name' => 'Order #100000001',
'description' => 'firstname lastname',
]
],
],
];
}
}