public function testProductCollectionsSynchronization()
 {
     $provider = $this->getBaseProvider();
     $repository = $this->getMockBuilder('Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock();
     $em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $em->expects($this->any())->method('getRepository')->will($this->returnValue($repository));
     $registry = $this->getMock('Doctrine\\Common\\Persistence\\ManagerRegistry');
     $registry->expects($this->any())->method('getManagerForClass')->will($this->returnValue($em));
     $productCollectionManager = new ProductCollectionManager('Sonata\\Tests\\Component\\Product\\ProductCollection', $registry);
     $provider->setProductCollectionManager($productCollectionManager);
     $product = new Product();
     $collection1 = new Collection();
     $collection1->setId(1);
     $productCollection1 = new ProductCollection();
     $productCollection1->setId(1);
     $productCollection1->setCollection($collection1);
     $product->addProductCollection($productCollection1);
     $variation = $provider->createVariation($product, false);
     $this->assertEquals(0, count($variation->getProductCollections()));
     $provider->synchronizeVariationsCollections($product);
     $this->assertEquals(1, count($variation->getProductCollections()));
     $collection2 = new Collection();
     $collection2->setId(2);
     $productCollection2 = new ProductCollection();
     $productCollection2->setId(2);
     $productCollection2->setCollection($collection2);
     $product->addProductCollection($productCollection2);
     $this->assertEquals(1, count($variation->getProductCollections()));
     $provider->synchronizeVariationsCollections($product);
     $this->assertEquals(2, count($variation->getProductCollections()));
     $product->removeProductCollection($productCollection1);
     $this->assertEquals(2, count($variation->getProductCollections()));
     $repository->expects($this->any())->method('findOneBy')->will($this->returnValue($productCollection1));
     $provider->synchronizeVariationsCollections($product);
     //        $this->assertEquals(1, count($variation->getProductCollections()));
     //        $this->assertFalse($variation->getProductCollections()->contains($productCollection1));
     //        $this->assertTrue($variation->getProductCollections()->contains($productCollection2));
 }