function it_normalizes_attribute_option(AttributeOptionInterface $option, AttributeOptionValueInterface $valueUs, AttributeOptionValueInterface $valueFr) { $option->getId()->willReturn(42); $option->getCode()->willReturn('red'); $valueUs->getLocale()->willReturn('en_US'); $valueUs->getValue()->willReturn('Red'); $valueFr->getLocale()->willReturn('fr_FR'); $valueFr->getValue()->willReturn('Rouge'); $option->getOptionValues()->willReturn([$valueUs, $valueFr]); $this->normalize($option, 'mongodb_json', [])->shouldReturn(['id' => 42, 'code' => 'red', 'optionValues' => ['en_US' => ['value' => 'Red', 'locale' => 'en_US'], 'fr_FR' => ['value' => 'Rouge', 'locale' => 'fr_FR']]]); }
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']]); }
function it_throws_an_exception_when_attribute_option_is_not_valid($attributeRepository, $validator, AttributeOptionInterface $attributeOption, AttributeInterface $attribute, AttributeGroupInterface $attributeGroup, AttributeOptionValueInterface $attributeOptionValue) { $attributeOption->getId()->willReturn(null); $attributeOption->getAttribute()->willReturn($attribute); $attribute->getGroup()->willReturn($attributeGroup); $attributeOption->setCode('mycode')->shouldBeCalled(); $attributeRepository->findOneByIdentifier('myattribute')->willReturn(null); $attributeOption->setAttribute($attribute)->shouldNotBeCalled(); $attributeOption->setSortOrder(12)->shouldBeCalled(); $attributeOption->setLocale('de_DE')->shouldBeCalled(); $attributeOption->getTranslation()->willReturn($attributeOptionValue); $attributeOptionValue->setLabel('210 x 1219 mm')->shouldBeCalled(); $violationList = new ConstraintViolationList(); $violationList->add(new ConstraintViolation('', '', [], $attributeOption, null, null)); $validator->validate($attributeOption)->willReturn($violationList); $this->shouldThrow('Pim\\Bundle\\CatalogBundle\\Exception\\BusinessValidationException')->during('update', [$attributeOption, ['code' => 'mycode', 'attribute' => 'myattribute', 'sort_order' => 12, 'labels' => ['de_DE' => '210 x 1219 mm']]]); }
/** * {@inheritdoc} */ public function findAllWithAttributeOption(AttributeOptionInterface $option) { $id = (int) $option->getId(); $qb = $this->createQueryBuilder('p'); if ('options' === $option->getAttribute()->getBackendType()) { $qb->field('values.optionIds')->in([$id]); } else { $qb->field('values.option')->equals($id); } return $qb->getQuery()->execute()->toArray(); }