Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
IndexScopeResolverTest.php
Go to the documentation of this file.
1 <?php
8 
10 use \Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
11 
15 class IndexScopeResolverTest extends \PHPUnit\Framework\TestCase
16 {
20  protected $scopeResolver;
21 
25  private $resource;
26 
30  private $target;
31 
32  protected function setUp()
33  {
34  $this->resource = $this->getMockBuilder(\Magento\Framework\App\ResourceConnection::class)
35  ->setMethods(['getTableName'])
36  ->disableOriginalConstructor()
37  ->getMockForAbstractClass();
38 
39  $this->scopeResolver = $this->getMockBuilder(\Magento\Framework\App\ScopeResolverInterface::class)
40  ->disableOriginalConstructor()
41  ->getMockForAbstractClass();
42 
43  $objectManager = new ObjectManager($this);
44 
45  $this->target = $objectManager->getObject(
46  \Magento\Framework\Indexer\ScopeResolver\IndexScopeResolver::class,
47  [
48  'resource' => $this->resource,
49  'scopeResolver' => $this->scopeResolver
50  ]
51  );
52  }
53 
60  public function testResolve($indexName, array $dimensions, $expected)
61  {
62  $dimensions = array_map(
63  function ($demension) {
64  return $this->createDimension($demension[0], $demension[1]);
65  },
66  $dimensions
67  );
68  $scope = $this->getMockBuilder(\Magento\Framework\App\ScopeInterface::class)
69  ->disableOriginalConstructor()
70  ->getMockForAbstractClass();
71 
72  $scope->expects($this->any())->method('getId')->willReturn(1);
73 
74  $this->resource->expects($this->once())
75  ->method('getTableName')
76  ->willReturnArgument(0);
77 
78  $this->scopeResolver->expects($this->any())->method('getScope')->willReturn($scope);
79  $result = $this->target->resolve($indexName, $dimensions);
80  $this->assertEquals($expected, $result);
81  }
82 
86  public function resolveDataProvider()
87  {
88  return [
89  [
90  'index' => 'some_index',
91  'dimensions' => [],
92  'expected' => 'some_index'
93  ],
94  [
95  'index' => 'index_name',
96  'dimensions' => [['scope', 'name']],
97  'expected' => 'index_name_scope1'
98  ],
99  [
100  'index' => 'index_name',
101  'dimensions' => [['index', 20]],
102  'expected' => 'index_name_index20'
103  ],
104  [
105  'index' => 'index_name',
106  'dimensions' => [['first', 10], ['second', 20]],
107  // actually you will get exception here thrown in ScopeResolverInterface
108  'expected' => 'index_name_first10_second20'
109  ],
110  [
111  'index' => 'index_name',
112  'dimensions' => [['second', 10], ['first', 20]],
113  'expected' => 'index_name_first20_second10'
114  ],
115  [
116  'index' => 'index_name',
117  'dimensions' => [[-1, 10], ['first', 20]],
118  'expected' => 'index_name_-110_first20'
119  ]
120  ];
121  }
122 
128  private function createDimension($name, $value)
129  {
130  $dimension = $this->getMockBuilder(\Magento\Framework\Search\Request\Dimension::class)
131  ->setMethods(['getName', 'getValue'])
132  ->disableOriginalConstructor()
133  ->getMock();
134  $dimension->expects($this->any())
135  ->method('getName')
136  ->willReturn($name);
137  $dimension->expects($this->any())
138  ->method('getValue')
139  ->willReturn($value);
140  return $dimension;
141  }
142 }
$objectManager
Definition: bootstrap.php:17
$value
Definition: gender.phtml:16
if(!isset($_GET['name'])) $name
Definition: log.php:14