function it_updates_normalized_product_template_values_if_media_values_have_been_handled($normalizer, ProductTemplateInterface $imageTemplate, ProductTemplateInterface $textTemplate, ProductValueInterface $imageValue, ProductValueInterface $textValue, FileInfoInterface $imageMedia) { $normalizer->normalize(Argument::cetera())->willReturn([]); $imageTemplate->getValues()->willReturn([$imageValue]); $imageValue->getMedia()->willReturn($imageMedia); $imageMedia->isRemoved()->willReturn(true); $imageValue->setMedia(null)->shouldBeCalled(); $imageTemplate->setValuesData([])->shouldBeCalled(); $textTemplate->getValues()->willReturn([$textValue]); $textTemplate->setValuesData([])->shouldNotBeCalled(); $this->handleProductTemplateMedia($imageTemplate); $this->handleProductTemplateMedia($textTemplate); }
function it_throws_an_exception_if_media_of_variant_group_is_not_found($objectDetacher, $normalizer, $mediaFetcher, $stepExecution, $variantGroupUpdater, ArrayCollection $productValueCollection, FileInfoInterface $media1, FileInfoInterface $media2, GroupInterface $variantGroup, ProductTemplateInterface $productTemplate, ProductValueInterface $productValue1, ProductValueInterface $productValue2, JobParameters $jobParameters, JobExecution $jobExecution, JobInstance $jobInstance, ExecutionContext $executionContext) { $stepExecution->getJobParameters()->willReturn($jobParameters); $jobParameters->get('filePath')->willReturn('my/path/variant_group.csv'); $jobParameters->has('with_media')->willReturn(true); $jobParameters->get('with_media')->willReturn(true); $variantGroup->getProductTemplate()->willReturn($productTemplate); $variantGroup->getCode()->willReturn('my_variant_group'); $productValueCollection->toArray()->willReturn([$productValue1, $productValue2]); $productValue1->setMedia($media1); $productValue2->setMedia($media2); $stepExecution->getJobExecution()->willReturn($jobExecution); $jobExecution->getJobInstance()->willReturn($jobInstance); $jobExecution->getId()->willReturn(100); $jobInstance->getCode()->willReturn('csv_variant_group_export'); $jobExecution->getExecutionContext()->willReturn($executionContext); $executionContext->get(JobInterface::WORKING_DIRECTORY_PARAMETER)->willReturn('/working/directory/'); $values = ['picture' => ['locale' => null, 'scope' => null, 'data' => ['filePath' => 'path/not_found.jpg']]]; $variantStandard = ['code' => 'my_variant_group', 'values' => $values]; $normalizer->normalize($variantGroup, null, ['with_variant_group_values' => true, 'identifier' => 'my_variant_group'])->willReturn($variantStandard); $variantGroupUpdater->update($variantGroup, ['values' => $variantStandard['values']])->shouldBeCalled(); $productTemplate->getValuesData()->willReturn($variantStandard['values']); $productTemplate->getValues()->willReturn($productValueCollection); $mediaFetcher->fetchAll($productValueCollection, '/working/directory/', 'my_variant_group')->shouldBeCalled(); $mediaFetcher->getErrors()->willReturn([['message' => 'The media has not been found or is not currently available', 'media' => ['filePath' => 'path/not_found.jpg']]]); $stepExecution->addWarning('The media has not been found or is not currently available', [], new DataInvalidItem(['filePath' => 'path/not_found.jpg']))->shouldBeCalled(); $this->process($variantGroup)->shouldReturn($variantStandard); $objectDetacher->detach($variantGroup)->shouldBeCalled(); }