function it_normalizes_a_step_execution(StepExecution $stepExecution, BatchStatus $status, \DateTime $startTime, $translator)
 {
     $stepExecution->getStepName()->willReturn('export');
     $translator->trans('export')->willReturn('Export step');
     $stepExecution->getSummary()->willReturn(['read' => 12, 'write' => 50]);
     $translator->trans('job_execution.summary.read')->willReturn('Read');
     $translator->trans('job_execution.summary.write')->willReturn('Write');
     $stepExecution->getStatus()->willReturn($status);
     $status->getValue()->willReturn(9);
     $translator->trans('pim_import_export.batch_status.9')->willReturn('PENDING');
     $stepExecution->getStartTime()->willReturn($startTime);
     $stepExecution->getEndTime()->willReturn(null);
     $startTime->getTimestamp()->willReturn(1411400461);
     $utcStartTime = new \DateTime();
     $utcStartTime->setTimestamp(1411400461);
     $finalDate = $utcStartTime->format('Y-m-d g:i:s A');
     $stepExecution->getWarnings()->willReturn(new ArrayCollection([new Warning($stepExecution->getWrappedObject(), 'a_warning', 'warning_reason', ['foo' => 'bar'], ['a' => 'A', 'b' => 'B', 'c' => 'C'])]));
     $translator->trans('a_warning')->willReturn('Reader');
     $translator->trans(12)->willReturn(12);
     $translator->trans(50)->willReturn(50);
     $translator->trans('warning_reason', ['foo' => 'bar'])->willReturn('WARNING!');
     $stepExecution->getFailureExceptions()->willReturn([['message' => 'a_failure', 'messageParameters' => ['foo' => 'bar']]]);
     $translator->trans('a_failure', ['foo' => 'bar'])->willReturn('FAIL!');
     $this->normalize($stepExecution, 'any')->shouldReturn(['label' => 'Export step', 'status' => 'PENDING', 'summary' => ['Read' => 12, 'Write' => 50], 'startedAt' => $finalDate, 'endedAt' => null, 'warnings' => [['label' => 'Reader', 'reason' => 'WARNING!', 'item' => ['a' => 'A', 'b' => 'B', 'c' => 'C']]], 'failures' => ['FAIL!']]);
 }
 public function testGetAddFailureExceptions()
 {
     $this->assertEmpty($this->stepExecution->getFailureExceptions());
     $exception1 = new \Exception('My exception 1', 1);
     $exception2 = new \Exception('My exception 2', 2);
     $this->assertEntity($this->stepExecution->addFailureException($exception1));
     $this->assertEntity($this->stepExecution->addFailureException($exception2));
     $failureExceptions = $this->stepExecution->getFailureExceptions();
     $this->assertEquals('Exception', $failureExceptions[0]['class']);
     $this->assertEquals('My exception 1', $failureExceptions[0]['message']);
     $this->assertEquals('1', $failureExceptions[0]['code']);
     $this->assertContains(__FUNCTION__, $failureExceptions[0]['trace']);
     $this->assertEquals('Exception', $failureExceptions[1]['class']);
     $this->assertEquals('My exception 2', $failureExceptions[1]['message']);
     $this->assertEquals('2', $failureExceptions[1]['code']);
     $this->assertContains(__FUNCTION__, $failureExceptions[1]['trace']);
 }
 /**
  * Returns the messages for a step execution
  *
  * @param StepExecution $stepExecution
  *
  * @return string
  */
 protected function getStepExecutionMessages(StepExecution $stepExecution)
 {
     $message = '';
     foreach ($stepExecution->getFailureExceptions() as $exception) {
         $message .= $this->getFailureExceptionMessage(sprintf('STEP %s', $stepExecution->getStepName()), $exception);
     }
     foreach ($stepExecution->getWarnings() as $warning) {
         $message .= $this->getWarningMessage($warning);
     }
     return $message;
 }
 /**
  * {@inheritdoc}
  */
 public function getFailureExceptions()
 {
     return array_map(function ($e) {
         return $e['message'];
     }, $this->stepExecution->getFailureExceptions());
 }
 /**
  * {@inheritDoc}
  */
 public function getFailureExceptions()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getFailureExceptions', array());
     return parent::getFailureExceptions();
 }