/** * Create and configure a family intance * * @return Family */ public function createFamily() { $family = new Family(); $identifier = $this->productManager->getIdentifierAttribute(); $family->addAttribute($identifier); $family->setAttributeAsLabel($identifier); foreach ($this->getChannels() as $channel) { $family->addAttributeRequirement($this->factory->createAttributeRequirement($identifier, $channel, true)); } return $family; }
/** * Test related method */ public function testGetAttributeRequirements() { $mobileName = $this->getAttributeRequirementMock('mobile', 'name'); $mobileDescription = $this->getAttributeRequirementMock('mobile', 'description'); $ecommerceName = $this->getAttributeRequirementMock('ecommerce', 'name'); $ecommerceDescription = $this->getAttributeRequirementMock('ecommerce', 'description'); $this->family->setAttributeRequirements(array($mobileName, $mobileDescription, $ecommerceName, $ecommerceDescription)); $expectedAttrRequirements = array('name_mobile' => $mobileName, 'description_mobile' => $mobileDescription, 'name_ecommerce' => $ecommerceName, 'description_ecommerce' => $ecommerceDescription); $this->assertEquals($expectedAttrRequirements, $this->family->getAttributeRequirements()); // test add method $ipadName = $this->getAttributeRequirementMock('ipad', 'name'); $this->family->addAttributeRequirement($ipadName); $expectedAttrRequirements['name_ipad'] = $ipadName; $this->assertEquals($expectedAttrRequirements, $this->family->getAttributeRequirements()); }
/** * {@inheritDoc} */ public function addAttributeRequirement(\Pim\Bundle\CatalogBundle\Model\AttributeRequirementInterface $requirement) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'addAttributeRequirement', array($requirement)); return parent::addAttributeRequirement($requirement); }
/** * Sets the requirements for a channel * * @param string $class * @param Family $family * @param string $channelCode * @param array $attributeCodes */ protected function setChannelRequirements($class, Family $family, $channelCode, $attributeCodes) { foreach ($attributeCodes as $attributeCode) { $data = array('attribute' => $attributeCode, 'channel' => $channelCode, 'required' => true); $requirement = $this->transformNestedEntity($class, 'requirements', $this->requirementClass, $data); if ($requirement->getAttribute() === null) { throw new \Exception(sprintf('The attribute "%s" used as requirement in family "%s" is not known', $attributeCode, $family->getCode())); } $family->addAttributeRequirement($requirement); } }
/** * {@inheritdoc} */ protected function doPerform(Family $family) { foreach ($this->attRequirements as $attributeRequirement) { $family->addAttribute($attributeRequirement->getAttribute()); $family->addAttributeRequirement($this->factory->createAttributeRequirement($attributeRequirement->getAttribute(), $attributeRequirement->getChannel(), $attributeRequirement->isRequired())); } }