function it_updates_a_new_attribute($attrGroupRepo, AttributeInterface $attribute, AttributeTranslation $translation, AttributeGroupInterface $attributeGroup, PropertyAccessor $accessor) { $attribute->getId()->willReturn(null); $attribute->getAttributeType()->willReturn('pim_reference_data_multiselect'); $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(); $attrGroupRepo->findOneByIdentifier('marketing')->willReturn($attributeGroup); $attribute->setGroup($attributeGroup)->shouldBeCalled(); $attribute->setAttributeType('pim_catalog_text')->shouldBeCalled(); $accessor->setValue($attribute, 'attributeType', 'pim_catalog_text'); $this->update($attribute, $data); }
/** * @param AttributeInterface $attribute * @param string|null $data */ protected function setType($attribute, $data) { if ('' === $data || null === $data) { throw new \InvalidArgumentException('attributeType must be filled.'); } try { $attributeType = $this->registry->get($data); $attribute->setAttributeType($attributeType->getName()); $attribute->setBackendType($attributeType->getBackendType()); $attribute->setUnique($attributeType->isUnique()); } catch (\LogicException $exception) { throw new \InvalidArgumentException(sprintf('AttributeType "%s" does not exist.', $data)); } }