Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DependencyInfoProviderTest.php
Go to the documentation of this file.
1 <?php
8 
13 
14 class DependencyInfoProviderTest extends \PHPUnit\Framework\TestCase
15 {
19  private $objectManagerHelper;
20 
24  private $configMock;
25 
29  private $dependencyInfoProvider;
30 
34  protected function setUp()
35  {
36  $this->objectManagerHelper = new ObjectManagerHelper($this);
37 
38  $this->configMock = $this->getMockBuilder(ConfigInterface::class)
39  ->getMockForAbstractClass();
40 
41  $this->dependencyInfoProvider = $this->objectManagerHelper->getObject(
42  DependencyInfoProvider::class,
43  [
44  'config' => $this->configMock,
45  ]
46  );
47  }
48 
49  public function testGetDependencies()
50  {
51  $indexerId = 'indexer_1';
52  $dependencies = [
53  'indexer_2',
54  'indexer_3',
55  ];
56  $this->addSeparateIndexersToConfigMock([
57  [
58  'indexer_id' => $indexerId,
59  'dependencies' => $dependencies,
60  ]
61  ]);
62  $this->assertSame($dependencies, $this->dependencyInfoProvider->getIndexerIdsToRunBefore($indexerId));
63  }
64 
66  {
67  $indexerId = 'indexer_1';
68  $this->configMock
69  ->method('getIndexer')
70  ->willReturn([]);
71  $this->expectException(NoSuchEntityException::class);
72  $this->expectExceptionMessage((string)__("%1 indexer does not exist.", $indexerId));
73  $this->dependencyInfoProvider->getIndexerIdsToRunBefore($indexerId);
74  }
75 
82  public function testGetDependentIndexerIds(string $indexerId, array $indexersData, array $dependentIndexerIds)
83  {
84  $this->addSeparateIndexersToConfigMock($indexersData);
85  $this->addAllIndexersToConfigMock($indexersData);
86  $this->assertSame(
87  $dependentIndexerIds,
88  array_values($this->dependencyInfoProvider->getIndexerIdsToRunAfter($indexerId))
89  );
90  }
91 
96  {
97  return [
98  [
99  'indexer' => 'indexer_2',
100  'indexers' => [
101  'indexer_2' => [
102  'indexer_id' => 'indexer_2',
103  'dependencies' => [],
104  ],
105  'indexer_4' => [
106  'indexer_id' => 'indexer_4',
107  'dependencies' => [
108  'indexer_2',
109  ],
110  ],
111  'indexer_3' => [
112  'indexer_id' => 'indexer_3',
113  'dependencies' => [
114  'indexer_4',
115  ],
116  ],
117  'indexer_1' => [
118  'indexer_id' => 'indexer_1',
119  'dependencies' => [
120  'indexer_2',
121  'indexer_3',
122  ],
123  ],
124  'indexer_5' => [
125  'indexer_id' => 'indexer_5',
126  'dependencies' => [],
127  ],
128  ],
129  'dependent_indexers' => ['indexer_4', 'indexer_1'],
130  ]
131  ];
132  }
133 
135  {
136  $indexerId = 'indexer_1';
137  $this->configMock
138  ->method('getIndexer')
139  ->willReturn([]);
140  $this->expectException(NoSuchEntityException::class);
141  $this->expectExceptionMessage((string)__("%1 indexer does not exist.", $indexerId));
142  $this->dependencyInfoProvider->getIndexerIdsToRunAfter($indexerId);
143  }
144 
148  private function addSeparateIndexersToConfigMock(array $indexers)
149  {
150  $this->configMock
151  ->method('getIndexer')
152  ->willReturnMap(
153  array_map(
154  function ($elem) {
155  return [$elem['indexer_id'], $elem];
156  },
157  $indexers
158  )
159  );
160  }
161 
165  private function addAllIndexersToConfigMock(array $indexers)
166  {
167  $this->configMock
168  ->method('getIndexers')
169  ->willReturn($indexers);
170  }
171 }
__()
Definition: __.php:13
testGetDependentIndexerIds(string $indexerId, array $indexersData, array $dependentIndexerIds)