Sonata\Tests\Component\Product\BaseProductServiceTest::testProductCollectionsSynchronization PHP Method

testProductCollectionsSynchronization() public method

    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));
    }