function it_normalizes_a_product_associations_in_standard_format_only(ProductInterface $product, AssociationInterface $association1, AssociationInterface $association2, AssociationTypeInterface $associationType1, AssociationTypeInterface $associationType2, GroupInterface $group1, ProductInterface $productAssociated)
 {
     $group1->getCode()->willReturn('group_code');
     $associationType1->getCode()->willReturn('XSELL');
     $association1->getAssociationType()->willReturn($associationType1);
     $association1->getGroups()->willReturn([$group1]);
     $association1->getProducts()->willReturn([]);
     $productAssociated->getReference()->willReturn('product_code');
     $associationType2->getCode()->willReturn('PACK');
     $association2->getAssociationType()->willReturn($associationType2);
     $association2->getGroups()->willReturn([]);
     $association2->getProducts()->willReturn([$productAssociated]);
     $product->getAssociations()->willReturn([$association1, $association2]);
     $this->normalize($product, 'standard')->shouldReturn(['PACK' => ['groups' => [], 'products' => ['product_code']], 'XSELL' => ['groups' => ['group_code'], 'products' => []]]);
 }
 /**
  * {@inheritdoc}
  *
  * @param ProductInterface $product
  */
 public function normalize($product, $format = null, array $context = [])
 {
     $data = [];
     foreach ($product->getAssociations() as $association) {
         $code = $association->getAssociationType()->getCode();
         $data[$code] = ['groups' => [], 'products' => []];
         foreach ($association->getGroups() as $group) {
             $data[$code]['groups'][] = $group->getCode();
         }
         foreach ($association->getProducts() as $product) {
             $data[$code]['products'][] = $product->getReference();
         }
     }
     ksort($data);
     return $data;
 }
 function it_normalizes_the_associations_of_the_product(ProductInterface $product, AssociationInterface $association1, AssociationInterface $association2, AssociationTypeInterface $type1, AssociationTypeInterface $type2, ProductInterface $productAssociated1, ProductInterface $productAssociated2, ProductInterface $productAssociated3, GroupInterface $groupAssociated1, GroupInterface $groupAssociated2)
 {
     $type1->getCode()->willReturn('wahou the type');
     $type2->getCode()->willReturn('such a type');
     $groupAssociated1->getCode()->willReturn('group 1');
     $groupAssociated2->getCode()->willReturn('group 2');
     $productAssociated1->getReference()->willReturn('product 1');
     $productAssociated2->getReference()->willReturn('product 2');
     $productAssociated3->getReference()->willReturn('product 3');
     $association1->getAssociationType()->willReturn($type1);
     $association2->getAssociationType()->willReturn($type2);
     $association1->getGroups()->willReturn([$groupAssociated1]);
     $association2->getGroups()->willReturn([$groupAssociated1, $groupAssociated2]);
     $association1->getProducts()->willReturn([]);
     $association2->getProducts()->willReturn([$productAssociated1, $productAssociated2, $productAssociated3]);
     $product->getAssociations()->willReturn([$association1, $association2]);
     $this->normalize($product, 'json')->shouldReturn(['such a type' => ['groups' => ['group 1', 'group 2'], 'products' => ['product 1', 'product 2', 'product 3']], 'wahou the type' => ['groups' => ['group 1'], 'products' => []]]);
 }
 function it_validates_an_entity_which_has_no_identifier($validator, ProductInterface $product, ColumnInfo $columnInfo, ConstraintViolationList $violationList, \ArrayIterator $iterator)
 {
     $product->getReference()->willReturn('sku-001');
     $columnInfo->getPropertyPath()->willReturn('unique_attribute');
     $validator->validate($product)->willReturn($violationList);
     $violationList->getIterator()->willReturn($iterator);
     $iterator->rewind()->willReturn(null);
     $iterator->valid()->willReturn(false);
     $iterator->next()->willReturn(null);
     $this->validate($product, [$columnInfo], [], [])->shouldReturn([]);
 }