103 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Search\Model;
 | 
						|
 | 
						|
/**
 | 
						|
 * @magentoDbIsolation disabled
 | 
						|
 * @magentoDataFixture Magento/Search/_files/synonym_reader.php
 | 
						|
 */
 | 
						|
class SynonymReaderTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var \Magento\Search\Model\SynonymReader
 | 
						|
     */
 | 
						|
    private $model;
 | 
						|
 | 
						|
    protected function setUp(): void
 | 
						|
    {
 | 
						|
        $objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
 | 
						|
        $this->model = $objectManager->get(\Magento\Search\Model\SynonymReader::class);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public function loadByPhraseDataProvider(): array
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            [
 | 
						|
                'ELIZABETH', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                '-+<(ELIZABETH)>*~', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'ENGLISH', [['synonyms' => 'british,english', 'store_id' => 1, 'website_id' => 0]]
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'English', [['synonyms' => 'british,english', 'store_id' => 1, 'website_id' => 0]]
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'QUEEN', [['synonyms' => 'queen,monarch', 'store_id' => 1, 'website_id' => 0]]
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'Monarch', [['synonyms' => 'queen,monarch', 'store_id' => 1, 'website_id' => 0]]
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                '-+<(Monarch)>*~', [['synonyms' => 'queen,monarch', 'store_id' => 1, 'website_id' => 0]]
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'MONARCH English', [
 | 
						|
                ['synonyms' => 'queen,monarch', 'store_id' => 1, 'website_id' => 0],
 | 
						|
                ['synonyms' => 'british,english', 'store_id' => 1, 'website_id' => 0]
 | 
						|
                ]
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'query_value', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'query_value+', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'query_value-', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'query_@value', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                'query_value+@', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                '<', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                '>', []
 | 
						|
            ],
 | 
						|
            [
 | 
						|
                '<english>', [['synonyms' => 'british,english', 'store_id' => 1, 'website_id' => 0]]
 | 
						|
            ],
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param string $phrase
 | 
						|
     * @param array $expectedResult
 | 
						|
     * @dataProvider loadByPhraseDataProvider
 | 
						|
     */
 | 
						|
    public function testLoadByPhrase(string $phrase, array $expectedResult)
 | 
						|
    {
 | 
						|
        $data = $this->model->loadByPhrase($phrase)->getData();
 | 
						|
 | 
						|
        $i = 0;
 | 
						|
        foreach ($expectedResult as $r) {
 | 
						|
            $this->assertEquals($r['synonyms'], $data[$i]['synonyms']);
 | 
						|
            $this->assertEquals($r['store_id'], $data[$i]['store_id']);
 | 
						|
            $this->assertEquals($r['website_id'], $data[$i]['website_id']);
 | 
						|
            ++$i;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |