public function testVariationCreation()
{
$provider = $this->getBaseProvider();
$provider->setVariationFields(array('name', 'price'));
$product = new Product();
$product->id = 2;
$product->addDelivery(new Delivery());
$product->addPackage(new Package());
$product->addProductCategory(new ProductCategory());
$variation1 = $provider->createVariation($product, false);
$variation2 = $provider->createVariation($product, true);
$this->assertNull($variation1->getId());
$this->assertEquals('fake name (duplicated)', $variation1->getName());
$this->assertEquals($product->getId(), $variation1->getParent()->getId());
$this->assertFalse($variation1->isEnabled());
$this->assertTrue($variation1->isVariation());
$this->assertEquals(2, count($product->getVariations()));
$this->assertEquals(0, count($variation1->getVariations()));
$this->assertEquals(0, count($variation1->getPackages()));
$this->assertEquals(0, count($variation1->getDeliveries()));
$this->assertEquals(0, count($variation1->getProductCategories()));
$this->assertEquals(0, count($variation2->getVariations()));
$this->assertEquals(1, count($variation2->getPackages()));
$this->assertEquals(1, count($variation2->getDeliveries()));
$provider->setVariationFields(array('packages', 'productCollections', 'productCategories', 'deliveries'));
$variation3 = $provider->createVariation($product, true);
$this->assertEquals(0, count($variation3->getVariations()));
$this->assertEquals(0, count($variation3->getPackages()));
$this->assertEquals(0, count($variation3->getDeliveries()));
$this->assertEquals(0, count($variation3->getProductCategories()));
}