/**
  * Bind products
  *
  * @param Group $group
  * @param array $appendProducts
  * @param array $removeProducts
  */
 protected function bindProducts(Group $group, array $appendProducts, array $removeProducts)
 {
     foreach ($appendProducts as $product) {
         $group->addProduct($product);
     }
     foreach ($removeProducts as $product) {
         $group->removeProduct($product);
     }
 }
 /**
  * Test getter/setter/add/remove for products property
  */
 public function testGetSetAddRemoveProducts()
 {
     // Change value and assert new
     $newProduct = new Product();
     $this->assertEntity($this->group->addProduct($newProduct));
     $this->assertInstanceOf('Pim\\Bundle\\CatalogBundle\\Model\\Product', $this->group->getProducts()->first());
     $this->assertEntity($this->group->removeProduct($newProduct));
     $this->assertNotInstanceOf('Pim\\Bundle\\CatalogBundle\\Model\\Product', $this->group->getProducts()->first());
     $this->assertCount(0, $this->group->getProducts());
     // Use setter and assert getProducts result
     $newProduct1 = new Product();
     $expectedProducts = array($newProduct, $newProduct1);
     $this->assertEntity($this->group->setProducts($expectedProducts));
     $this->assertCount(2, $this->group->getProducts());
 }
 /**
  * {@inheritDoc}
  */
 public function removeProduct(\Pim\Bundle\CatalogBundle\Model\ProductInterface $product)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeProduct', array($product));
     return parent::removeProduct($product);
 }