Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ProcessingErrorAggregatorTest.php
Go to the documentation of this file.
1 <?php
7 
9 
10 class ProcessingErrorAggregatorTest extends \PHPUnit\Framework\TestCase
11 {
17 
22  protected $model;
23 
27  protected $processingError1;
28 
32  protected $processingError2;
33 
37  protected $processingError3;
38 
42  protected function setUp()
43  {
44  $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
45  $this->processingErrorFactoryMock = $this->createPartialMock(
46  \Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorFactory::class,
47  ['create']
48  );
49 
50  $this->processingError1 = $objectManager->getObject(
51  \Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError::class
52  );
53 
54  $this->processingError2 = $objectManager->getObject(
55  \Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError::class
56  );
57 
58  $this->processingError3 = $objectManager->getObject(
59  \Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError::class
60  );
61 
62  $this->processingErrorFactoryMock->expects($this->any())->method('create')->willReturnOnConsecutiveCalls(
63  $this->processingError1,
64  $this->processingError2,
65  $this->processingError3
66  );
67 
68  $this->model = $objectManager->getObject(
69  \Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingErrorAggregator::class,
70  [
71  'errorFactory' => $this->processingErrorFactoryMock
72  ]
73  );
74  }
75 
79  public function testAddError()
80  {
81  $result = $this->model->addError(
82  'systemException',
83  'critical',
84  7,
85  'Some column name',
86  'Message',
87  'Description'
88  );
89  $this->assertEquals($result, $this->model);
90  }
91 
95  public function testAddRowToSkip()
96  {
97  $this->model->addRowToSkip(7);
98  $result = $this->model->isRowInvalid(7);
99  $this->assertTrue($result);
100  }
101 
105  public function testAddErrorMessageTemplate()
106  {
107  $this->model->addErrorMessageTemplate('columnNotFound', 'Template: No column');
108  $this->model->addError('systemException');
109  $this->model->addError('columnNotFound', 'critical', 7, 'Some column name', null, 'Description');
110  $this->model->addError('columnEmptyHeader', 'not-critical', 4, 'Some column name', 'No header', 'Description');
111  $result = $this->model->getRowsGroupedByErrorCode(['systemException'], [], false);
112  $expectedResult = ['systemException' => [0 => 1]];
113  $this->assertEquals($expectedResult, $result);
114  }
115 
120  public function testIsRowInvalid($errorLevel, $rowNumber, $isValid)
121  {
122  $this->model->addError('systemException', $errorLevel, $rowNumber, 'Column name', 'Message', 'Description');
123  $result = $this->model->isRowInvalid($rowNumber);
124  $this->assertEquals($isValid, $result);
125  }
126 
130  public function isRowInvalidDataProvider()
131  {
132  return [
137  ];
138  }
139 
143  public function testGetInvalidRowsCountZero()
144  {
145  $rowsNumber = $this->model->getInvalidRowsCount();
146  $this->assertEquals($rowsNumber, 0);
147  }
148 
152  public function testGetInvalidRowsCountOne()
153  {
154  $this->model->addError('systemException', 'critical', 7, 'Some column name', 'Message', 'Description');
155  $rowsNumber = $this->model->getInvalidRowsCount();
156  $this->assertEquals($rowsNumber, 1);
157  }
158 
162  public function testGetInvalidRowsCountTwo()
163  {
164  $this->model->addError('systemException');
165  $this->model->addError('systemException', 'critical', 8, 'Some column name', 'Message', 'Description');
166  $this->model->addError('systemException', 'critical', 7, 'Some column name', 'Message', 'Description');
167  $rowsNumber = $this->model->getInvalidRowsCount();
168  $this->assertEquals($rowsNumber, 2);
169  }
170 
174  public function testInitValidationStrategy()
175  {
176  $this->model->initValidationStrategy('validation-stop-on-errors', 5);
177  $this->assertEquals(5, $this->model->getAllowedErrorsCount());
178  }
179 
184  {
185  $this->model->addError('systemException', 'not-critical', 7, 'Some column name', 'Message', 'Description');
186  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
187  $this->model->addError('systemException', 'not-critical', 2, 'Some column name', 'Message', 'Description');
188  $this->model->initValidationStrategy('validation-stop-on-errors', 2);
189  $result = $this->model->isErrorLimitExceeded();
190  $this->assertTrue($result);
191  }
192 
197  {
198  $this->expectException(\Magento\Framework\Exception\LocalizedException::class);
199  $this->model->initValidationStrategy(null);
200  }
201 
206  {
207  $this->model->addError('systemException');
208  $this->model->addError('systemException', 'not-critical', 7, 'Some column name', 'Message', 'Description');
209  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
210  $result = $this->model->isErrorLimitExceeded();
211  $this->assertTrue($result);
212  }
213 
218  {
219  $this->model->addError('systemException');
220  $this->model->addError('systemException', 'critical', 7, 'Some column name', 'Message', 'Description');
221  $this->model->addError('systemException', 'critical', 4, 'Some column name', 'Message', 'Description');
222  $result = $this->model->isErrorLimitExceeded();
223  $this->assertFalse($result);
224  }
225 
229  public function testHasFatalExceptionsTrue()
230  {
231  $this->model->addError('systemException');
232  $this->model->addError('columnNotFound', 'critical', 7, 'Some column name', 'Message', 'Description');
233  $this->model->addError('columnEmptyHeader', 'not-critical', 4, 'Some column name', 'Message', 'Description');
234  $result = $this->model->hasFatalExceptions();
235  $this->assertTrue($result);
236  }
237 
241  public function testHasFatalExceptionsFalse()
242  {
243  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
244  $result = $this->model->hasFatalExceptions();
245  $this->assertFalse($result);
246  }
247 
251  public function testHasToBeTerminatedFalse()
252  {
253  $result = $this->model->hasToBeTerminated();
254  $this->assertFalse($result);
255  }
256 
260  public function testHasToBeTerminatedTrue()
261  {
262  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
263  $result = $this->model->hasToBeTerminated();
264  $this->assertTrue($result);
265  }
266 
270  public function testGetAllErrors()
271  {
272  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
273  $this->model->addError('systemException', 'not-critical', 5, 'Some column name', 'Message', 'Description');
274  $this->model->addError('systemException', 'not-critical', 6, 'Some column name', 'Message', 'Description');
275  $result = $this->model->getAllErrors();
276  //check if is array of objects
277  $this->assertInternalType('array', $result);
278  $this->assertCount(3, $result);
279  $this->assertInstanceOf(\Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError::class, $result[0]);
280  }
281 
285  public function testGetErrorByRowNumber()
286  {
287  $this->model->addError('systemException1', 'not-critical', 1);
288  $this->model->addError('systemException2', 'not-critical', 1);
289  $this->model->addError('systemException3', 'not-critical', 2);
290  $result = $this->model->getErrorByRowNumber(1);
291 
292  $this->assertInternalType('array', $result);
293  $this->assertCount(2, $result);
294  $this->assertInstanceOf(\Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError::class, $result[0]);
295  $this->assertInstanceOf(\Magento\ImportExport\Model\Import\ErrorProcessing\ProcessingError::class, $result[1]);
296  $this->assertEquals('systemException1', $result[0]->getErrorCode());
297  $this->assertEquals('systemException2', $result[1]->getErrorCode());
298  }
299 
304  public function testAddTheSameErrorTwice()
305  {
306  $this->processingErrorFactoryMock->expects($this->any())->method('create')->willReturnOnConsecutiveCalls(
307  $this->processingError1,
308  $this->processingError2
309  );
310  $this->model->addError('systemException', 'not-critical', 1);
311  $this->model->addError('systemException', 'not-critical', 1);
312  $result = $this->model->getErrorByRowNumber(1);
313 
314  $this->assertCount(1, $result);
315  $this->assertEquals(1, $this->model->getErrorsCount());
316  }
317 
321  public function testGetErrorsByCodeInArray()
322  {
323  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
324  $this->model->addError('columnNotFound', 'critical', 7, 'Some column name', 'No column', 'Description');
325  $this->model->addError('systemException', 'not-critical', 9, 'Some column name', 'Message', 'Description');
326  $result = $this->model->getErrorsByCode(['systemException']);
327  $this->assertCount(2, $result);
328  }
329 
334  {
335  $this->model->addError('columnNotFound', 'not-critical', 4, 'Some column name', 'Message', 'Description');
336  $this->model->addError('columnNotFound', 'critical', 7, 'Some column name', 'No column', 'Description');
337  $this->model->addError('columnEmptyHeader', 'not-critical', 5, 'Some column name', 'No header', 'Description');
338  $result = $this->model->getErrorsByCode(['systemException']);
339  $this->assertCount(0, $result);
340  }
341 
350  public function testGetRowsGroupedByErrorCodeWithErrors(array $params = [], array $expectedResult = [])
351  {
352  $this->model->addError('systemException');
353  $this->model->addError('columnNotFound', 'critical', 7, 'Some column name', 'No column', 'Description');
354  $this->model->addError('columnEmptyHeader', 'not-critical', 4, 'Some column name', 'No header', 'Description');
355 
356  $result = call_user_func_array([$this->model, 'getRowsGroupedByErrorCode'], $params);
357 
358  $this->assertEquals($expectedResult, $result);
359  }
360 
365  {
366  $errorCode1 = 'systemException';
367  $errorCode2 = 'columnNotFound';
368  $errorCode3 = 'columnEmptyHeader';
369 
370  $message1 = 'systemException';
371  $message2 = 'No column';
372  $message3 = 'No header';
373 
374  return [
375  [
376  [[$errorCode1]],
377  [$message1 => [1]]
378  ],
379  [
380  [[], [$errorCode2]],
381  [$message1 => [1], $message3 => [5]]
382  ],
383  [
384  [[$errorCode3, $errorCode2], [$errorCode2]],
385  [$message3 => [5]]
386  ],
387  [
388  [[], []],
389  [$message1 => [1], $message2 => [8], $message3 => [5]]
390  ],
391 
392  [
393  [[$errorCode1], [], false],
394  [$errorCode1 => [1]]
395  ],
396  [
397  [[], [$errorCode2], false],
398  [$errorCode1 => [1], $errorCode3 => [5]]
399  ],
400  [
401  [[$errorCode3, $errorCode2], [$errorCode2], false],
402  [$errorCode3 => [5]]
403  ],
404  [
405  [[], [], false],
406  [$errorCode1 => [1], $errorCode2 => [8], $errorCode3 => [5]]
407  ],
408  ];
409  }
410 
415  {
416  $result = $this->model->getRowsGroupedByErrorCode();
417  $this->assertInternalType('array', $result);
418  $this->assertCount(0, $result);
419  }
420 
424  public function testGetAllowedErrorsCount()
425  {
426  $this->assertEquals($this->model->getAllowedErrorsCount(), 0);
427  }
428 
432  public function testClear()
433  {
434  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
435  $this->model->addError('columnNotFound', 'critical', 7, 'Some column name', 'No column', 'Description');
436  $this->model->clear();
437  $result = $this->model->getAllErrors();
438  $this->assertEquals([], $result);
439  }
440 
444  public function testGetErrorsCount()
445  {
446  $this->model->addError('systemException', 'not-critical', 4, 'Some column name', 'Message', 'Description');
447  $this->model->addError('columnNotFound', 'critical', 7, 'Some column name', 'No column', 'Description');
448  $this->model->addError('systemException', 'not-critical', 9, 'Some column name', 'Message', 'Description');
449  $result = $this->model->getErrorsCount(['critical']);
450  $this->assertEquals($result, 1);
451  }
452 }
$objectManager
Definition: bootstrap.php:17
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18