122 lines
4.1 KiB
PHP
Executable File
122 lines
4.1 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/Customer/_files/three_customers.php
|
|
* @magentoDataFixture Magento/Customer/_files/customer_address.php
|
|
*/
|
|
class CustomerTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* @dataProvider loadDataProvider
|
|
*/
|
|
public function testLoad($query, $limit, $start, $expectedResult)
|
|
{
|
|
/** Preconditions */
|
|
$objectManager = Bootstrap::getObjectManager();
|
|
/** @var \Magento\Backend\Model\Search\Customer $customerSearch */
|
|
$customerSearch = $objectManager->create(\Magento\Backend\Model\Search\Customer::class);
|
|
$customerSearch->setQuery($query);
|
|
$customerSearch->setLimit($limit);
|
|
$customerSearch->setStart($start);
|
|
$customerSearch->load();
|
|
|
|
/** SUT Execution */
|
|
$searchResults = $customerSearch->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 */
|
|
$customerId = substr($expectedItem['id'], 11); // 'customer/1/' is added to all actual customer IDs
|
|
$this->assertStringContainsString(
|
|
"customer/index/edit/id/$customerId",
|
|
$searchResults[$itemIndex]['url'],
|
|
'Item URL is invalid.'
|
|
);
|
|
unset($searchResults[$itemIndex]['url']);
|
|
|
|
/** Validate other item data */
|
|
$this->assertEquals($expectedItem, $searchResults[$itemIndex], "Data of item #$itemIndex is invalid.");
|
|
}
|
|
}
|
|
|
|
public static function loadDataProvider()
|
|
{
|
|
return [
|
|
'All items, first page' => [
|
|
'Firstname',
|
|
2, // Items on page
|
|
1, // Page number
|
|
[
|
|
[
|
|
'id' => 'customer/1/1',
|
|
'type' => 'Customer',
|
|
'name' => 'Firstname Lastname',
|
|
'description' => 'CompanyName',
|
|
],
|
|
[
|
|
'id' => 'customer/1/2',
|
|
'type' => 'Customer',
|
|
'name' => 'Firstname2 Lastname2',
|
|
'description' => null
|
|
]
|
|
],
|
|
],
|
|
'All items, second page' => [
|
|
'Firstname',
|
|
2, // Items on page
|
|
2, // Page number
|
|
[
|
|
[
|
|
'id' => 'customer/1/3',
|
|
'type' => 'Customer',
|
|
'name' => 'Firstname3 Lastname3',
|
|
'description' => null,
|
|
]
|
|
],
|
|
],
|
|
'Search by last name, second item only' => [
|
|
'Lastname2',
|
|
10, // Items on page
|
|
1, // Page number
|
|
[
|
|
[
|
|
'id' => 'customer/1/2',
|
|
'type' => 'Customer',
|
|
'name' => 'Firstname2 Lastname2',
|
|
'description' => null,
|
|
]
|
|
],
|
|
],
|
|
'No results' => [
|
|
'NotExistingCustomerName',
|
|
10, // Items on page
|
|
1, // Page number
|
|
[],
|
|
],
|
|
'Search by company name, first item only' => [
|
|
'CompanyName',
|
|
10, // Items on page
|
|
1, // Page number
|
|
[
|
|
[
|
|
'id' => 'customer/1/1',
|
|
'type' => 'Customer',
|
|
'name' => 'Firstname Lastname',
|
|
'description' => 'CompanyName',
|
|
],
|
|
],
|
|
],
|
|
];
|
|
}
|
|
}
|