function it_checks_if_the_given_job_code_exists_in_the_context(JobInstance $jobInstance)
 {
     $this->addJobName('a_job_code');
     $jobInstance->getJobName()->willReturn('a_job_code');
     $this->isVisible([], ['jobInstance' => $jobInstance])->shouldReturn(true);
     $jobInstance->getJobName()->willReturn('another_job_code');
     $this->isVisible([], ['jobInstance' => $jobInstance])->shouldReturn(false);
 }
 /**
  * @param JobInstance $jobInstance
  * @param string      $field
  * @param mixed       $data
  */
 protected function setData(JobInstance $jobInstance, $field, $data)
 {
     switch ($field) {
         case 'connector':
             $jobInstance->setConnector($data);
             break;
         case 'alias':
             $jobInstance->setJobName($data);
             break;
         case 'label':
             $jobInstance->setLabel($data);
             break;
         case 'type':
             $jobInstance->setType($data);
             break;
         case 'configuration':
             $job = $this->jobRegistry->get($jobInstance->getJobName());
             /** @var JobParameters $jobParameters */
             $jobParameters = $this->jobParametersFactory->create($job, $data);
             $jobInstance->setRawParameters($jobParameters->all());
             break;
         case 'code':
             $jobInstance->setCode($data);
             break;
     }
 }
 /**
  * {@inheritdoc}
  */
 public function getEditTemplate(JobInstance $jobInstance)
 {
     $jobName = $jobInstance->getJobName();
     if (isset($this->jobTemplates[$jobName]) && isset($this->jobTemplates[$jobName]['templates']['edit'])) {
         return $this->jobTemplates[$jobName]['templates']['edit'];
     }
     return sprintf(self::DEFAULT_EDIT_TEMPLATE, ucfirst($jobInstance->getType()));
 }
 function it_adds_a_violation_if_job_instance_has_an_unknown_type($jobRegistry, $context, JobInstanceConstraint $constraint, JobInstance $jobInstance, ConstraintViolationBuilderInterface $violation)
 {
     $jobInstance->getJobName()->willReturn(null);
     $jobRegistry->get(null)->willThrow(new UndefinedJobException('The job "" is not registered'));
     $jobInstance->getType()->willReturn('import');
     $context->buildViolation($constraint->message, ['%job_type%' => 'import'])->shouldBeCalled()->willReturn($violation);
     $violation->atPath($constraint->property)->shouldBeCalled()->willReturn($violation);
     $violation->addViolation()->shouldBeCalled();
     $this->validate($jobInstance, $constraint);
 }
 function it_generates_default_export_job_template(JobInstance $jobInstance)
 {
     $jobInstance->getJobName()->willReturn('an_unknown_job');
     $jobInstance->getType()->willReturn('export');
     $expectedJobTemplate = sprintf(JobTemplateProvider::DEFAULT_CREATE_TEMPLATE, 'Export');
     $this->getCreateTemplate($jobInstance)->shouldReturn($expectedJobTemplate);
     $expectedJobTemplate = sprintf(JobTemplateProvider::DEFAULT_SHOW_TEMPLATE, 'Export');
     $this->getShowTemplate($jobInstance)->shouldReturn($expectedJobTemplate);
     $expectedJobTemplate = sprintf(JobTemplateProvider::DEFAULT_EDIT_TEMPLATE, 'Export');
     $this->getEditTemplate($jobInstance)->shouldReturn($expectedJobTemplate);
 }
 function it_returns_false_for_the_unsupported_job($jobRegistry, ItemReaderInterface $reader, JobExecution $jobExecution, JobInstance $jobInstance, Job $job, ItemStep $step)
 {
     $jobInstance->getJobName()->willReturn('my_job_name');
     $jobRegistry->get('my_job_name')->willReturn($job);
     $jobExecution->getJobInstance()->willReturn($jobInstance);
     $jobExecution->getId()->willReturn(12);
     $jobInstance->getType()->willReturn('type');
     $job->getSteps()->willReturn([$step]);
     $step->getReader()->willReturn($reader);
     $this->supports($jobExecution)->shouldReturn(false);
 }
 function it_updates_an_job_instance($jobParametersFactory, $jobRegistry, JobInstance $jobInstance, JobInterface $job, JobParameters $jobParameters)
 {
     $jobInstance->getJobName()->willReturn('fixtures_currency_csv');
     $jobRegistry->get('fixtures_currency_csv')->willReturn($job);
     $jobParametersFactory->create($job, ['filePath' => 'currencies.csv'])->willReturn($jobParameters);
     $jobParameters->all()->willReturn(['filePath' => 'currencies.csv']);
     $jobInstance->setJobName('fixtures_currency_csv')->shouldBeCalled();
     $jobInstance->setCode('fixtures_currency_csv')->shouldBeCalled();
     $jobInstance->setConnector('Data fixtures')->shouldBeCalled();
     $jobInstance->setLabel('Currencies data fixtures')->shouldBeCalled();
     $jobInstance->setRawParameters(['filePath' => 'currencies.csv'])->shouldBeCalled();
     $jobInstance->setType('type')->shouldBeCalled();
     $this->update($jobInstance, ['connector' => 'Data fixtures', 'alias' => 'fixtures_currency_csv', 'label' => 'Currencies data fixtures', 'type' => 'type', 'configuration' => ['filePath' => 'currencies.csv'], 'code' => 'fixtures_currency_csv']);
 }
 function it_normalizes_a_job_execution_instance($serializer, $translator, $labelProvider, JobInstance $jobInstance, JobExecution $jobExecution, StepExecution $exportExecution, StepExecution $cleanExecution, BatchStatus $status)
 {
     $jobExecution->getFailureExceptions()->willReturn([['message' => 'error', 'messageParameters' => ['foo' => 'bar']]]);
     $jobInstance->getJobName()->willReturn('wow_job');
     $translator->trans('error', ['foo' => 'bar'])->willReturn('Such error');
     $labelProvider->getJobLabel('wow_job')->willReturn('Wow job');
     $jobExecution->isRunning()->willReturn(true);
     $jobExecution->getStatus()->willReturn($status);
     $jobExecution->getJobInstance()->willReturn($jobInstance);
     $status->getValue()->willReturn(1);
     $translator->trans('pim_import_export.batch_status.1')->willReturn('COMPLETED');
     $jobExecution->getStepExecutions()->willReturn([$exportExecution, $cleanExecution]);
     $serializer->normalize($exportExecution, 'any', [])->willReturn('**exportExecution**');
     $serializer->normalize($cleanExecution, 'any', [])->willReturn('**cleanExecution**');
     $this->normalize($jobExecution, 'any')->shouldReturn(['label' => 'Wow job', 'failures' => ['Such error'], 'stepExecutions' => ['**exportExecution**', '**cleanExecution**'], 'isRunning' => true, 'status' => 'COMPLETED']);
 }
 /**
  * Create a jobExecution
  *
  * @param JobInstance   $jobInstance
  * @param UserInterface $user
  *
  * @return JobExecution
  */
 protected function createJobExecution(JobInstance $jobInstance, UserInterface $user)
 {
     $job = $this->jobRegistry->get($jobInstance->getJobName());
     $jobParameters = $this->jobParametersFactory->create($job, $jobInstance->getRawParameters());
     $jobExecution = $this->jobRepository->createJobExecution($jobInstance, $jobParameters);
     $jobExecution->setUser($user->getUsername());
     $this->jobRepository->updateJobExecution($jobExecution);
     return $jobExecution;
 }
 function it_creates_a_file_if_writer_is_correct($jobRegistry, Writer $writer, JobExecution $jobExecution, JobInstance $jobInstance, Job $job, ItemStep $step, $factory, $filesystem)
 {
     $file1 = tempnam(sys_get_temp_dir(), 'spec');
     $file2 = tempnam(sys_get_temp_dir(), 'spec');
     $jobInstance->getJobName()->willReturn('my_job_name');
     $jobRegistry->get('my_job_name')->willReturn($job);
     $jobExecution->getJobInstance()->willReturn($jobInstance);
     $jobExecution->getId()->willReturn(12);
     $jobInstance->getType()->willReturn('type');
     $job->getSteps()->willReturn([$step]);
     $step->getWriter()->willReturn($writer);
     $writer->getWrittenFiles()->willReturn([$file1 => 'file1', $file2 => 'file2']);
     $writer->getPath()->willReturn(sys_get_temp_dir());
     $filesystem->has('type/my_job_name/12/archive')->willReturn(false);
     $filesystem->createDir('type/my_job_name/12/archive')->shouldBeCalled();
     $factory->createZip(Argument::any())->willReturn($filesystem);
     $filesystem->put('file1', '')->shouldBeCalled();
     $filesystem->put('file2', '')->shouldBeCalled();
     $this->archive($jobExecution);
     unlink($file1);
     unlink($file2);
 }
 /**
  * @param JobInstance $jobInstance
  * @param array       $validationGroups
  *
  * @return ConstraintViolationListInterface
  */
 protected function validateJobInstance(JobInstance $jobInstance, array $validationGroups)
 {
     $rawParameters = $jobInstance->getRawParameters();
     $job = $this->jobRegistry->get($jobInstance->getJobName());
     $jobParameters = $this->jobParametersFactory->create($job, $rawParameters);
     /** @var ConstraintViolationListInterface $jobParamsViolations */
     $jobParamsViolations = $this->jobParametersValidator->validate($job, $jobParameters, $validationGroups);
     /** @var ConstraintViolationListInterface $jobInstanceViolations */
     $jobInstanceViolations = $this->validator->validate($jobInstance, $validationGroups);
     foreach ($jobInstanceViolations as $violation) {
         $jobParamsViolations->add($violation);
     }
     return $jobParamsViolations;
 }
 function it_does_not_support_a_incompatible_job($jobRegistry, ItemWriterInterface $writer, JobExecution $jobExecution, JobInstance $jobInstance, Job $job, ItemStep $step)
 {
     $jobInstance->getJobName()->willReturn('my_job_name');
     $jobRegistry->get('my_job_name')->willReturn($job);
     $jobExecution->getJobInstance()->willReturn($jobInstance);
     $jobExecution->getId()->willReturn(12);
     $jobInstance->getType()->willReturn('type');
     $job->getSteps()->willReturn([$step]);
     $step->getWriter()->willReturn($writer);
     $this->supports($jobExecution)->shouldReturn(false);
 }