/**
  * {@inheritdoc}
  */
 public function archive(JobExecution $jobExecution)
 {
     if (!$this->collector->getInvalidItems()) {
         return;
     }
     $key = strtr($this->getRelativeArchivePath($jobExecution), array('%filename%' => 'invalid_items.csv'));
     $this->filesystem->write($key, '', true);
     $this->writer->setFilePath(sprintf('%s/%s', $this->archiveDir, $key));
     $this->writer->initialize();
     $this->writer->write($this->collector->getInvalidItems());
     $this->writer->flush();
 }
 /**
  * {@inheritdoc}
  */
 public function supports(JobExecution $jobExecution)
 {
     if ($this->collector->getInvalidItems()) {
         foreach ($this->collector->getInvalidItems() as $elements) {
             foreach ($elements as $element) {
                 if (is_array($element)) {
                     return false;
                 }
             }
         }
         return true;
     }
 }
 function it_archives_unvalid_items(InvalidItemsCollector $collector, CsvWriter $writer, JobExecution $jobExecution, JobInstance $jobInstance, Filesystem $filesystem)
 {
     $collector->getInvalidItems()->willReturn(['items']);
     $jobExecution->getId()->willReturn('id');
     $jobExecution->getJobInstance()->willReturn($jobInstance);
     $jobInstance->getType()->willReturn('type');
     $jobInstance->getAlias()->willReturn('alias');
     $filesystem->put('type/alias/id/invalid/invalid_items.csv', '')->shouldBeCalled();
     $writer->setFilePath('/tmp/archivist/type/alias/id/invalid/invalid_items.csv')->shouldBeCalled();
     $writer->initialize()->shouldBeCalled();
     $writer->write(['items'])->shouldBeCalled();
     $writer->flush()->shouldBeCalled();
     $this->archive($jobExecution);
 }
 public function testSubscribedToInvalidItem()
 {
     $this->assertEquals(array(EventInterface::INVALID_ITEM => 'collect'), InvalidItemsCollector::getSubscribedEvents());
 }