Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/cartforge.co/dev/tests/api-functional/testsuite/Magento/Search/Api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/cartforge.co/dev/tests/api-functional/testsuite/Magento/Search/Api/SearchTest.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\Search\Api;

use Magento\Catalog\Api\Data\ProductInterface;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Framework\Webapi\Rest\Request;
use Magento\TestFramework\Helper\Bootstrap;
use Magento\TestFramework\TestCase\WebapiAbstract;

class SearchTest extends WebapiAbstract
{
    const SERVICE_VERSION = 'V1';
    const SERVICE_NAME = 'searchV1';
    const RESOURCE_PATH = '/V1/search/';

    /**
     * @var ProductInterface
     */
    private $product;

    /**
     * @inheritDoc
     */
    protected function setUp(): void
    {
        $productSku = 'simple';

        $objectManager = Bootstrap::getObjectManager();
        $productRepository = $objectManager->get(ProductRepositoryInterface::class);
        $this->product = $productRepository->get($productSku);
    }

    /**
     * Tests that webapi call returns response when search criteria is valid.
     *
     * @magentoApiDataFixture Magento/Catalog/_files/products.php
     */
    public function testExistingProductSearch(): void
    {
        $productName = $this->product->getName();

        $searchCriteria = $this->buildSearchCriteria($productName);
        $serviceInfo = $this->buildServiceInfo($searchCriteria);

        $response = $this->_webApiCall($serviceInfo, $searchCriteria);

        self::assertArrayHasKey('search_criteria', $response);
        self::assertArrayHasKey('items', $response);
        self::assertGreaterThan(1, count($response['items']));
        self::assertGreaterThan(0, $response['items'][0]['id']);
    }

    /**
     * Tests that response is empty if invalid data is provided.
     *
     * @magentoApiDataFixture Magento/Catalog/_files/products.php
     */
    public function testNonExistentProductSearch(): void
    {
        $searchCriteria = $this->buildSearchCriteria('nonExistentProduct');
        $serviceInfo = $this->buildServiceInfo($searchCriteria);

        $response = $this->_webApiCall($serviceInfo, $searchCriteria);

        self::assertArrayHasKey('search_criteria', $response);
        self::assertArrayHasKey('items', $response);
        self::assertCount(0, $response['items']);
    }

    /**
     * @param string $productName
     * @return array
     */
    private function buildSearchCriteria(string $productName): array
    {
        return [
            'searchCriteria' => [
                'request_name' => 'quick_search_container',
                'filter_groups' => [
                    [
                        'filters' => [
                            [
                                'field' => 'search_term',
                                'value' => $productName,
                            ]
                        ]
                    ]
                ]
            ]
        ];
    }

    /**
     * @param array $searchCriteria
     * @return array
     */
    private function buildServiceInfo(array $searchCriteria): array
    {
        return [
            'rest' => [
                'resourcePath' => self::RESOURCE_PATH . '?' . http_build_query($searchCriteria),
                'httpMethod' => Request::HTTP_METHOD_GET
            ],
            'soap' => [
                'service' => self::SERVICE_NAME,
                'serviceVersion' => self::SERVICE_VERSION,
                'operation' => self::SERVICE_NAME . 'Search'
            ]
        ];
    }
}

Spamworldpro Mini