function it_throws_an_exception_if_no_groups_found($attributeGroupRepository, AttributeInterface $attribute, AttributeTranslation $translation) { $attribute->getId()->willReturn(null); $attribute->getAttributeType()->willReturn('pim_reference_data_simpleselect'); $data = ['labels' => ['en_US' => 'Test1', 'fr_FR' => 'Test2'], 'group' => 'marketing', 'attributeType' => 'pim_catalog_text']; $attribute->setLocale('en_US')->shouldBeCalled(); $attribute->setLocale('fr_FR')->shouldBeCalled(); $attribute->getTranslation()->willReturn($translation); $translation->setLabel('Test1')->shouldBeCalled(); $translation->setLabel('Test2')->shouldBeCalled(); $attributeGroupRepository->findOneByIdentifier('marketing')->willReturn(null); $this->shouldThrow(new \InvalidArgumentException('AttributeGroup "marketing" does not exist'))->during('update', [$attribute, $data]); }
/** * @param AttributeInterface $attribute * @param string $field * @param mixed $data * * @throws \InvalidArgumentException */ protected function setData(AttributeInterface $attribute, $field, $data) { if ('labels' === $field) { foreach ($data as $localeCode => $label) { $attribute->setLocale($localeCode); $translation = $attribute->getTranslation(); $translation->setLabel($label); } } elseif ('group' === $field) { $attributeGroup = $this->findAttributeGroup($data); if (null !== $attributeGroup) { $attribute->setGroup($attributeGroup); } else { throw new \InvalidArgumentException(sprintf('AttributeGroup "%s" does not exist', $data)); } } else { $this->accessor->setValue($attribute, $field, $data); } }
function it_gets_all_product_attributes_and_sets_correct_locale($attributeRepository, $massActionManager, AttributeInterface $attr1, AttributeInterface $attr2, AttributeGroupInterface $attrGroup, LocaleInterface $enLocale) { $enLocale->getCode()->willReturn('en_US'); $this->setLocale($enLocale); $attributeRepository->findWithGroups([], ['conditions' => ['unique' => 0]])->shouldBeCalled()->willReturn([$attr1, $attr2]); $attr1->setLocale('en_US')->shouldBeCalled(); $attr2->setLocale('en_US')->shouldBeCalled(); $attr1->getGroup()->willReturn($attrGroup); $attr2->getGroup()->willReturn($attrGroup); $massActionManager->filterLocaleSpecificAttributes([$attr1, $attr2], 'en_US')->willReturn([$attr1, $attr2]); $attrGroup->setLocale('en_US')->shouldBeCalledTimes(2); $this->getAllAttributes()->shouldReturn([$attr1, $attr2]); }
/** * @param AttributeInterface $attribute * @param array $data */ protected function setLabels(AttributeInterface $attribute, array $data) { foreach ($data as $localeCode => $label) { $attribute->setLocale($localeCode); $translation = $attribute->getTranslation(); $translation->setLabel($label); } }
function it_filters_attributes_coming_from_variant_group($massActionManager, $productBuilder, ProductInterface $product1, ProductInterface $product2, AttributeInterface $name, AttributeInterface $name, AttributeInterface $description, AttributeInterface $price, AttributeGroup $otherGroup, ProductValueInterface $nameProductValue, ProductValueInterface $descriptionProductValue, ProductValueInterface $priceProductValue) { $this->setObjectsToMassEdit([$product1, $product2]); $name->getGroup()->willReturn($otherGroup); $name->setLocale('en_US')->shouldBeCalled(); $otherGroup->setLocale('en_US')->shouldBeCalled(); $description->getGroup()->willReturn($otherGroup); $description->setLocale('en_US')->shouldBeCalled(); $price->getGroup()->willReturn($otherGroup); $price->setLocale('en_US')->shouldBeCalled(); $product1->getId()->willReturn(1); $product2->getId()->willReturn(2); $name->setLocale(Argument::any())->willReturn($name); $name->isScopable()->willReturn(false); $name->getCode()->willReturn('name'); $description->setLocale(Argument::any())->willReturn($description); $description->isScopable()->willReturn(false); $description->getCode()->willReturn('description'); $price->setLocale(Argument::any())->willReturn($price); $price->isScopable()->willReturn(false); $price->getCode()->willReturn('price'); $this->setObjectsToMassEdit([$product1, $product2]); $massActionManager->findCommonAttributes([$product1, $product2])->willReturn([$name, $description, $price]); $massActionManager->filterLocaleSpecificAttributes([$name, $description, $price], 'en_US')->willReturn([$name, $description, $price]); $massActionManager->filterAttributesComingFromVariant([$name, $description, $price], [$product1, $product2])->willReturn([$name, $price]); $productBuilder->createProductValue($name, 'en_US')->willReturn($nameProductValue); $productBuilder->addMissingPrices($nameProductValue)->shouldBeCalled(); $productBuilder->createProductValue($price, 'en_US')->willReturn($priceProductValue); $productBuilder->addMissingPrices($priceProductValue)->shouldBeCalled(); $this->initialize(); $this->getCommonAttributes()->shouldReturn([$name, $price]); $this->getValues()->shouldHaveCount(2); }