/**
  * @param JobResult $jobResult
  * @return array
  */
 protected function getErrors(JobResult $jobResult)
 {
     $context = $jobResult->getContext();
     $contextErrors = [];
     if ($context) {
         $contextErrors = $context->getErrors();
     }
     return array_slice(array_merge($jobResult->getFailureExceptions(), $contextErrors), 0, 100);
 }
 /**
  * @param JobResult $jobResult
  * @return array
  */
 protected function getValidationCounts(JobResult $jobResult)
 {
     $context = $jobResult->getContext();
     $counts = [];
     $counts['errors'] = count($jobResult->getFailureExceptions());
     if ($context) {
         $counts['process'] = 0;
         $counts['read'] = $context->getReadCount();
         $counts['process'] += $counts['add'] = $context->getAddCount();
         $counts['process'] += $counts['replace'] = $context->getReplaceCount();
         $counts['process'] += $counts['update'] = $context->getUpdateCount();
         $counts['process'] += $counts['delete'] = $context->getDeleteCount();
         $counts['error_entries'] = $context->getErrorEntriesCount();
         $counts['errors'] += count($context->getErrors());
         return $counts;
     }
     return $counts;
 }
 /**
  * @param JobResult $jobResult
  */
 protected function assertDatabaseContent(JobResult $jobResult)
 {
     $fixtures = new \RecursiveDirectoryIterator(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'Stub' . DIRECTORY_SEPARATOR . 'fixtures', \RecursiveDirectoryIterator::SKIP_DOTS);
     $campaignRepo = $this->getContainer()->get('doctrine')->getRepository('OroCRMMailChimpBundle:Campaign');
     $repository = $this->getContainer()->get('doctrine')->getRepository('OroCRMMailChimpBundle:MemberActivity');
     $addCount = 0;
     $fullCount = 0;
     foreach ($fixtures as $file) {
         $data = Yaml::parse($file->getPathName());
         $addCount += $data['addCount'];
         $fullCount += $data['fullCount'];
         foreach ($data['database'] as $criteria) {
             $campaign = $campaignRepo->findOneBy(['originId' => $criteria['campaign']]);
             $criteria['campaign'] = $campaign->getId();
             if (!empty($criteria['activityTime'])) {
                 $criteria['activityTime'] = new \DateTime($criteria['activityTime'], new \DateTimeZone('UTC'));
             }
             $result = $repository->findBy($criteria);
             $this->assertCount(1, $result, $file->getFileName());
         }
     }
     $this->assertEquals($addCount, $jobResult->getContext()->getAddCount());
     $this->assertCount($fullCount, $repository->findAll());
 }