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); } }