/**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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()));
     }
 }