function it_normalizes_completenesses_and_indexes_them($normalizer, AttributeInterface $attribute, AttributeTranslation $attributeTranslationFr, AttributeTranslation $attributeTranslationEn, CompletenessInterface $completeness, ChannelInterface $channel)
 {
     $normalizer->normalize(Argument::any(), 'internal_api', ['a_context_key' => 'context_value'])->willReturn(['missing' => [], 'completeness' => 'normalized_completeness']);
     $completeness->getChannel()->willReturn($channel);
     $channel->getCode()->willReturn('mobile', 'print', 'tablet', 'mobile', 'print', 'tablet');
     $attribute->getCode()->willReturn('name');
     $attribute->getTranslation('en_US')->willReturn($attributeTranslationEn);
     $attribute->getTranslation('fr_FR')->willReturn($attributeTranslationFr);
     $attributeTranslationEn->getLabel()->willReturn('labelEn');
     $attributeTranslationFr->getLabel()->willReturn('labelFr');
     $this->normalize(['en_US' => ['locale' => 'en_US', 'stats' => [], 'channels' => ['mobile' => ['missing' => [$attribute], 'completeness' => $completeness], 'print' => ['missing' => [$attribute], 'completeness' => $completeness], 'tablet' => ['missing' => [$attribute], 'completeness' => $completeness]]], 'fr_FR' => ['locale' => 'fr_FR', 'stats' => [], 'channels' => ['mobile' => ['missing' => [$attribute], 'completeness' => $completeness], 'print' => ['missing' => [$attribute], 'completeness' => $completeness], 'tablet' => ['missing' => [$attribute], 'completeness' => $completeness]]]], 'internal_api', ['a_context_key' => 'context_value'])->shouldReturn([['locale' => 'en_US', 'stats' => [], 'channels' => ['mobile' => ['missing' => [['code' => 'name', 'labels' => ['en_US' => 'labelEn', 'fr_FR' => 'labelFr']]], 'completeness' => 'normalized_completeness'], 'print' => ['missing' => [['code' => 'name', 'labels' => ['en_US' => 'labelEn', 'fr_FR' => 'labelFr']]], 'completeness' => 'normalized_completeness'], 'tablet' => ['missing' => [['code' => 'name', 'labels' => ['en_US' => 'labelEn', 'fr_FR' => 'labelFr']]], 'completeness' => 'normalized_completeness']]], ['locale' => 'fr_FR', 'stats' => [], 'channels' => ['mobile' => ['missing' => [['code' => 'name', 'labels' => ['en_US' => 'labelEn', 'fr_FR' => 'labelFr']]], 'completeness' => 'normalized_completeness'], 'print' => ['missing' => [['code' => 'name', 'labels' => ['en_US' => 'labelEn', 'fr_FR' => 'labelFr']]], 'completeness' => 'normalized_completeness'], 'tablet' => ['missing' => [['code' => 'name', 'labels' => ['en_US' => 'labelEn', 'fr_FR' => 'labelFr']]], 'completeness' => 'normalized_completeness']]]]);
 }
 /**
  * @param AttributeInterface $attribute
  * @param array              $locales
  *
  * @return array
  */
 protected function normalizeAttributeLabels(AttributeInterface $attribute, array $locales)
 {
     $labels = [];
     foreach ($locales as $locale) {
         $labels[$locale] = $attribute->getTranslation($locale)->getLabel();
     }
     return $labels;
 }
 function it_throws_an_exception_if_no_groups_found($attrGroupRepo, AttributeInterface $attribute, AttributeTranslation $translation)
 {
     $attribute->getId()->willReturn(null);
     $attribute->getAttributeType()->willReturn('pim_reference_data_simpleselect');
     $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();
     $attrGroupRepo->findOneByIdentifier('marketing')->willReturn(null);
     $this->shouldThrow(new \InvalidArgumentException('AttributeGroup "marketing" does not exist'))->during('update', [$attribute, $data]);
 }
 /**
  * @param AttributeInterface $attribute
  * @param array              $data
  */
 protected function setLabels(AttributeInterface $attribute, array $data)
 {
     foreach ($data as $localeCode => $label) {
         $attribute->setLocale($localeCode);
         $translation = $attribute->getTranslation();
         $translation->setLabel($label);
     }
 }