function it_does_not_update_readonly_fields_on_an_existing_attribute_option(AttributeOptionInterface $attributeOption, AttributeOptionValueInterface $attributeOptionValue)
 {
     $attributeOption->getId()->willReturn(42);
     $attributeOption->getAttribute()->willReturn(null);
     // read only fields
     $attributeOption->setCode('mycode')->shouldNotBeCalled();
     $attributeOption->setAttribute(Argument::any())->shouldNotBeCalled();
     $attributeOption->setSortOrder(12)->shouldBeCalled();
     $attributeOption->setLocale('de_DE')->shouldBeCalled();
     $attributeOption->getTranslation()->willReturn($attributeOptionValue);
     $attributeOptionValue->setLabel('210 x 1219 mm')->shouldBeCalled();
     $this->update($attributeOption, ['code' => 'mycode', 'attribute' => 'myattribute', 'sort_order' => 12, 'labels' => ['de_DE' => '210 x 1219 mm']]);
 }
 /**
  * @param AttributeOptionInterface $attributeOption
  * @param string                   $field
  * @param mixed                    $data
  *
  * @throws \InvalidArgumentException
  */
 protected function setData(AttributeOptionInterface $attributeOption, $field, $data)
 {
     if ('code' === $field) {
         $attributeOption->setCode($data);
     }
     if ('attribute' === $field) {
         $attribute = $this->findAttribute($data);
         if (null !== $attribute) {
             $attributeOption->setAttribute($attribute);
         } else {
             throw new \InvalidArgumentException(sprintf('Attribute "%s" does not exist', $data));
         }
     }
     if ('labels' === $field) {
         foreach ($data as $localeCode => $label) {
             $attributeOption->setLocale($localeCode);
             $translation = $attributeOption->getTranslation();
             $translation->setLabel($label);
         }
     }
     if ('sort_order' === $field) {
         $attributeOption->setSortOrder($data);
     }
 }