/**
  * {@inheritdoc}
  */
 public function guessConstraints(AttributeInterface $attribute)
 {
     $constraints = [];
     if ($attribute->isUnique()) {
         $constraints[] = new UniqueValue();
     }
     return $constraints;
 }
 function let(TranslationNormalizer $transnormalizer, AttributeInterface $attribute, AttributeGroupInterface $attributeGroup)
 {
     $this->beConstructedWith($transnormalizer);
     $transnormalizer->normalize(Argument::cetera())->willReturn([]);
     $attribute->getAttributeType()->willReturn('Yes/No');
     $attribute->getCode()->willReturn('attribute_size');
     $attribute->getGroup()->willReturn($attributeGroup);
     $attributeGroup->getCode()->willReturn('size');
     $attribute->isUnique()->willReturn(true);
     $attribute->isUseableAsGridFilter()->willReturn(false);
     $attribute->getAllowedExtensions()->willReturn(['csv', 'xml', 'json']);
     $attribute->getMetricFamily()->willReturn('Length');
     $attribute->getDefaultMetricUnit()->willReturn('Centimenter');
     $attribute->getReferenceDataName()->willReturn('color');
     $attribute->isLocalizable()->willReturn(true);
     $attribute->isScopable()->willReturn(false);
 }
 function it_generates_attribute_indexes_when_saving_unique_attribute($collection, $namingUtility, AttributeInterface $ean)
 {
     $ean->getCode()->willReturn('ean');
     $ean->getBackendType()->willReturn('varchar');
     $ean->isLocalizable()->willReturn(false);
     $ean->isScopable()->willReturn(false);
     $ean->isUnique()->willReturn(true);
     $ean->isUseableAsGridFilter()->willReturn(false);
     $ean->getAttributeType()->willReturn('pim_catalog_text');
     $indexes = array_fill(0, 10, 'fake_index');
     $collection->getIndexInfo()->willReturn($indexes);
     $options = ['background' => true, 'w' => 0];
     $namingUtility->getAttributeNormFields($ean)->willReturn(['normalizedData.ean']);
     $collection->ensureIndex(['normalizedData.ean' => 1], $options)->shouldBeCalled();
     $this->ensureIndexesFromAttribute($ean);
 }
 function it_removes_indexes_for_attribute_when_removing_it($indexPurger, AttributeInterface $name, LifecycleEventArgs $args)
 {
     $name->isUseableAsGridFilter()->willReturn(true);
     $name->getAttributeType()->willReturn('pim_catalog_text');
     $name->isUnique()->willReturn(false);
     $args->getEntity()->willReturn($name);
     $indexPurger->purgeIndexesFromAttribute($name)->shouldBeCalled();
     $this->postRemove($args);
 }
 /**
  * Ensure indexes from attribute if needed
  *
  * @param AttributeInterface $attribute
  */
 public function ensureIndexesFromAttribute(AttributeInterface $attribute)
 {
     if ($attribute->isUseableAsGridFilter() || AttributeTypes::IDENTIFIER === $attribute->getAttributeType() || $attribute->isUnique()) {
         $this->indexCreator->ensureIndexesFromAttribute($attribute);
     }
 }
 public function it_does_not_guess_unique_value(AttributeInterface $attribute)
 {
     $attribute->getBackendType()->willReturn(AbstractAttributeType::BACKEND_TYPE_VARCHAR);
     $attribute->isUnique()->willReturn(false);
     $this->guessConstraints($attribute)->shouldReturn([]);
 }