function it_returns_flat_data(Channel $channel, $channelManager, AbstractProduct $item, AbstractProductMedia $media1, AbstractProductMedia $media2, $serializer) { $media1->getFilename()->willReturn('media_name'); $media1->getFilePath()->willReturn('media_file_path'); $media1->getOriginalFilename()->willReturn('media_original_name'); $media2->getFilename()->willReturn('media_name'); $media2->getFilePath()->willReturn('media_file_path'); $media2->getOriginalFilename()->willReturn('media_original_name'); $item->getMedia()->willReturn([$media1, $media2]); $serializer->normalize($item, 'flat', ['scopeCode' => 'foobar', 'localeCodes' => ''])->willReturn(['normalized_product']); $channelManager->getChannelByCode('foobar')->willReturn($channel); $this->setChannel('foobar'); $this->process($item)->shouldReturn(['media' => [$media1, $media2], 'product' => ['normalized_product']]); }
/** * Get the export path of the media * * Examples: * - files/sku-001/front_view/en_US/ecommerce * - files/sku-002/manual/ecommerce * - files/sku-003/back_view/en_US * - files/sku-004/insurance * * @param AbstractProductMedia $media * * @return string */ public function getExportPath(AbstractProductMedia $media) { if ($media->getFilePath() === null) { return ''; } $value = $media->getValue(); $attribute = $value->getAttribute(); $target = sprintf('files/%s/%s', $value->getEntity()->getIdentifier(), $attribute->getCode()); if ($attribute->isLocalizable()) { $target .= '/' . $value->getLocale(); } if ($attribute->isScopable()) { $target .= '/' . $value->getScope(); } return $target . '/' . $media->getOriginalFilename(); }
function it_normalizes_media(AbstractProductMedia $media) { $media->getFilename()->willReturn('myfile.pdf'); $media->getOriginalFilename()->willReturn('myfile.pdf'); $this->normalize($media, 'mongodb_json', [])->shouldReturn(['filename' => 'myfile.pdf', 'originalFilename' => 'myfile.pdf']); }