function it_returns_well_formatted_actions_for_batch_job(AttributeInterface $attrColor, AttributeInterface $attrSize, ChannelInterface $channelMobile, ChannelInterface $channelEcommerce, AttributeRequirementInterface $colorMobileRequirement, AttributeRequirementInterface $colorEcommerceRequirement, AttributeRequirementInterface $sizeEcommerceRequirement) { $attrColor->getCode()->willReturn('color'); $attrSize->getCode()->willReturn('size'); $channelMobile->getCode()->willReturn('mobile'); $channelEcommerce->getCode()->willReturn('ecommerce'); $colorMobileRequirement->getAttribute()->willReturn($attrColor); $colorEcommerceRequirement->getAttribute()->willReturn($attrColor); $sizeEcommerceRequirement->getAttribute()->willReturn($attrSize); $colorMobileRequirement->getChannel()->willReturn($channelMobile); $colorEcommerceRequirement->getChannel()->willReturn($channelEcommerce); $sizeEcommerceRequirement->getChannel()->willReturn($channelEcommerce); $colorMobileRequirement->isRequired()->willReturn(false); $colorEcommerceRequirement->isRequired()->willReturn(true); $sizeEcommerceRequirement->isRequired()->willReturn(true); $colorMobileRequirement->getAttributeCode()->willReturn('color'); $colorEcommerceRequirement->getAttributeCode()->willReturn('color'); $sizeEcommerceRequirement->getAttributeCode()->willReturn('size'); $colorMobileRequirement->getChannelCode()->willReturn('mobile'); $colorEcommerceRequirement->getChannelCode()->willReturn('ecommerce'); $sizeEcommerceRequirement->getChannelCode()->willReturn('ecommerce'); $this->addAttributeRequirement($colorMobileRequirement); $this->addAttributeRequirement($colorEcommerceRequirement); $this->addAttributeRequirement($sizeEcommerceRequirement); $this->getActions()->shouldReturn([['attribute_code' => 'color', 'channel_code' => 'mobile', 'is_required' => false], ['attribute_code' => 'color', 'channel_code' => 'ecommerce', 'is_required' => true], ['attribute_code' => 'size', 'channel_code' => 'ecommerce', 'is_required' => true]]); }
function it_provide_product_completeness_if_a_family_is_defined($familyRepository, $productValueCompleteChecker, QueryBuilder $qb, AbstractQuery $query, AttributeRequirementInterface $requirement, ProductInterface $product, ChannelInterface $mobile, LocaleInterface $en, FamilyInterface $shirt, CompletenessInterface $completeness, ProductValueInterface $nameValue, AttributeInterface $name) { $product->getFamily()->willReturn($shirt); $product->getCompletenesses()->willReturn([$completeness]); $en->getCode()->willReturn('en_US'); $mobile->getCode()->willReturn('mobile'); $completeness->getLocale()->willReturn($en); $completeness->getChannel()->willReturn($mobile); $completeness->getMissingCount()->willReturn(1); $familyRepository->getFullRequirementsQB($shirt, 'en_US')->willReturn($qb); $qb->getQuery()->willReturn($query); $query->getResult()->willReturn([$requirement]); $requirement->getChannel()->willReturn($mobile); $requirement->getAttribute()->willReturn($name); $requirement->isRequired()->willReturn(true); $name->getCode()->willReturn('name'); $name->isLocalizable()->willreturn(true); $name->isScopable()->willReturn(false); $name->isLocaleSpecific()->willReturn(true); $name->hasLocaleSpecific($en)->willReturn(false); $product->getValues()->willReturn(new ArrayCollection()); $productValueCompleteChecker->supportsValue($nameValue); $productValueCompleteChecker->isComplete($nameValue, $mobile, $en); $this->getProductCompleteness($product, [$mobile], [$en], 'en_US')->shouldReturn(['en_US' => ['channels' => ['mobile' => ['completeness' => $completeness, 'missing' => []]], 'stats' => ['total' => 1, 'complete' => 0]]]); }