function it_updates_a_new_attribute($attributeGroupRepository, 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();
     $attributeGroupRepository->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             $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);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function addAttribute(AttributeInterface $attribute)
 {
     $this->attributes[] = $attribute;
     $attribute->setGroup($this);
     return $this;
 }
 /**
  * @param AttributeInterface $attribute
  * @param string             $data
  *
  * @throws \InvalidArgumentException
  */
 protected function setGroup(AttributeInterface $attribute, $data)
 {
     $attributeGroup = $this->findAttributeGroup($data);
     if (null !== $attributeGroup) {
         $attribute->setGroup($attributeGroup);
     } else {
         throw new \InvalidArgumentException(sprintf('AttributeGroup "%s" does not exist', $data));
     }
 }