function it_updates_a_group($groupTypeRepository, $attributeRepository, GroupInterface $group, GroupTypeInterface $type, GroupTranslation $translatable, AttributeInterface $attributeColor, AttributeInterface $attributeSize) { $groupTypeRepository->findOneByIdentifier('RELATED')->willReturn($type); $attributeRepository->findOneByIdentifier('color')->willReturn($attributeColor); $attributeRepository->findOneByIdentifier('size')->willReturn($attributeSize); $group->getTranslation()->willReturn($translatable); $translatable->setLabel('T-shirt super beau')->shouldBeCalled(); $group->setCode('mycode')->shouldBeCalled(); $group->setLocale('fr_FR')->shouldBeCalled(); $group->setType($type)->shouldBeCalled(); $group->setAxisAttributes([$attributeColor, $attributeSize])->shouldBeCalled(); $group->getId()->willReturn(null); $values = ['code' => 'mycode', 'type' => 'RELATED', 'labels' => ['fr_FR' => 'T-shirt super beau'], 'axis' => ['color', 'size']]; $this->update($group, $values, []); }
function it_updates_a_group($groupTypeRepository, $attributeRepository, $pqbFactory, GroupInterface $group, GroupTypeInterface $type, GroupTranslation $translatable, AttributeInterface $attributeColor, AttributeInterface $attributeSize, ProductInterface $removedProduct, ProductInterface $addedProduct, ProductQueryBuilderInterface $pqb) { $groupTypeRepository->findOneByIdentifier('RELATED')->willReturn($type); $attributeRepository->findOneByIdentifier('color')->willReturn($attributeColor); $attributeRepository->findOneByIdentifier('size')->willReturn($attributeSize); $pqbFactory->create()->willReturn($pqb); $pqb->addFilter('id', 'IN', [2])->shouldBeCalled(); $pqb->execute()->willReturn([$addedProduct]); $group->getTranslation()->willReturn($translatable); $translatable->setLabel('T-shirt super beau')->shouldBeCalled(); $group->setCode('mycode')->shouldBeCalled(); $group->setLocale('fr_FR')->shouldBeCalled(); $group->setType($type)->shouldBeCalled(); $group->setAxisAttributes([$attributeColor, $attributeSize])->shouldBeCalled(); $group->getId()->willReturn(null); $group->removeProduct($removedProduct)->shouldBeCalled(); $group->addProduct($addedProduct)->shouldBeCalled(); $group->getProducts()->willReturn([$removedProduct]); $values = ['code' => 'mycode', 'type' => 'RELATED', 'labels' => ['fr_FR' => 'T-shirt super beau'], 'axis' => ['color', 'size'], 'products' => [2]]; $this->update($group, $values, []); }
/** * @param GroupInterface $group * @param string[] $attributeCodes * * @throws \InvalidArgumentException */ protected function setAxis(GroupInterface $group, array $attributeCodes) { $attributes = []; foreach ($attributeCodes as $attributeCode) { $attribute = $this->attributeRepository->findOneByIdentifier($attributeCode); if (null === $attribute) { throw new \InvalidArgumentException(sprintf('Attribute "%s" does not exist', $attributeCode)); } $attributes[] = $attribute; } $group->setAxisAttributes($attributes); }
/** * @param GroupInterface $group * @param array $data */ protected function setAxis(GroupInterface $group, $data) { if (isset($data['axis']) && !empty($data['axis'])) { $axisCodes = explode(',', $data['axis']); $attributes = []; foreach ($axisCodes as $code) { $attribute = $this->attributeRepository->findOneByIdentifier($code); if (!$attribute) { throw new \LogicException(sprintf('Attribute with identifier "%s" not found', $code)); } $attributes[] = $attribute; } $group->setAxisAttributes($attributes); } }