6 declare(strict_types=1);
10 use \Magento\Framework\Indexer\MultiDimensionProvider;
11 use \Magento\Framework\Indexer\DimensionProviderInterface;
12 use \Magento\Framework\Indexer\Dimension;
22 $expectedDimensions = [[]];
27 $actualDimensions = [];
28 foreach ($multiDimensionProvider as $dimension) {
29 $actualDimensions[] = $dimension;
32 $this->assertSame($expectedDimensions, $actualDimensions);
61 $this->getDimensionMock(
'x',
'1'),
62 $this->getDimensionMock(
'x',
'2'),
63 $this->getDimensionMock(
'x',
'3'),
67 $this->getDimensionMock(
'y',
'1'),
68 $this->getDimensionMock(
'y',
'2'),
69 $this->getDimensionMock(
'y',
'3'),
70 $this->getDimensionMock(
'y',
'4'),
71 $this->getDimensionMock(
'y',
'5'),
75 $this->getDimensionMock(
'z',
'1'),
76 $this->getDimensionMock(
'z',
'2'),
79 $expectedDimensions = [];
81 foreach ($dimensionXData as $dimensionX) {
82 foreach ($dimensionYData as $dimensionY) {
83 foreach ($dimensionZData as $dimensionZ) {
84 $expectedDimensions[] = [
85 $dimensionX->getName() => $dimensionX,
86 $dimensionY->getName() => $dimensionY,
87 $dimensionZ->getName() => $dimensionZ,
96 $this->getDimensionProviderMock($dimensionXData),
97 $this->getDimensionProviderMock($dimensionYData),
98 $this->getDimensionProviderMock($dimensionZData),
102 $actualDimensions = [];
103 foreach ($multiDimensionProvider as $dimension) {
104 $actualDimensions[] = $dimension;
107 $this->assertSame($expectedDimensions, $actualDimensions);
117 $this->getDimensionMock(
'x',
'1'),
118 $this->getDimensionMock(
'x',
'2'),
119 $this->getDimensionMock(
'x',
'3'),
123 $this->getDimensionMock(
'z',
'1'),
124 $this->getDimensionMock(
'z',
'2'),
130 $this->getDimensionProviderMock($dimensionXData),
131 $this->getDimensionProviderMock($dimensionZData),
136 $actualDimensions1st = [];
137 foreach ($multiDimensionProvider as $dimension) {
138 $actualDimensions1st[] = $dimension;
142 $actualDimensions2nd = [];
143 foreach ($multiDimensionProvider as $dimension) {
144 $actualDimensions2nd[] = $dimension;
147 $this->assertSame($actualDimensions1st, $actualDimensions2nd);
161 $this->getDimensionProviderMock([]),
162 $this->getDimensionProviderMock([]),
166 $actualDimensions = [];
167 foreach ($multiDimensionProvider as $dimension) {
168 $actualDimensions[] = $dimension;
183 $this->getDimensionMock(
'x',
'1'),
184 $this->getDimensionMock(
'x',
'2'),
185 $this->getDimensionMock(
'x',
'3'),
189 $this->getDimensionMock(
'y',
'1'),
190 $this->getDimensionMock(
'y',
'2'),
191 $this->getDimensionMock(
'y',
'3'),
192 $this->getDimensionMock(
'y',
'4'),
193 $this->getDimensionMock(
'y',
'5'),
196 $dimensionZData = [];
201 $this->getDimensionProviderMock($dimensionXData),
202 $this->getDimensionProviderMock($dimensionYData),
203 $this->getDimensionProviderMock($dimensionZData),
207 $actualDimensions = [];
208 foreach ($multiDimensionProvider as $dimension) {
209 $actualDimensions[] = $dimension;
213 private function getDimensionProviderMock($dimensions)
215 $dimensionProviderMock = $this->getMockBuilder(DimensionProviderInterface::class)
216 ->disableOriginalConstructor()
217 ->disableOriginalClone()
218 ->disableArgumentCloning()
219 ->disallowMockingUnknownTypes()
220 ->setMethods([
'getIterator'])
221 ->getMockForAbstractClass();
223 $dimensionProviderMock->expects($this->any())
224 ->method(
'getIterator')
226 $this->returnCallback(
227 function () use ($dimensions) {
228 return \SplFixedArray::fromArray($dimensions);
233 return $dimensionProviderMock;
236 private function getDimensionMock(
string $name,
string $value)
238 $dimensionMock = $this->getMockBuilder(Dimension::class)
239 ->disableOriginalConstructor()
240 ->disableOriginalClone()
241 ->disableArgumentCloning()
242 ->disallowMockingUnknownTypes()
243 ->setMethods([
'getName',
'getValue'])
246 $dimensionMock->expects($this->any())
250 $dimensionMock->expects($this->any())
254 return $dimensionMock;
testWithNoDataProviders()
testMultiDimensionProviderWithMixedDataProvider()
testMultiDimensionProviderWithEmptyDataProvider()
testWithMultipleDataProviders()
if(!isset($_GET['name'])) $name
testMultiDimensionProviderIsReIterable()