public function testVariations() { $product = new Product(); $this->assertFalse($product->hasVariations(), 'there should not be any variations when initialized'); $this->assertEmpty($product->getVariations(), 'there should not be any variations when initialized'); $product->setPrice(3); $variation = $product->useVariation('variant1')->setPrice(4); $this->assertSame($product, $variation->getParent(), 'the original Product class should be the variation parent'); $product->useVariation('variant2')->setPrice(7); $this->assertSame(3, $product->getPrice()); $this->assertSame(4, $product->useVariation('variant1')->getPrice()); $this->assertSame(7, $product->useVariation('variant2')->getPrice()); $this->assertTrue($product->hasVariations()); $variations = $product->getVariations(); $this->assertCount(2, $variations); $this->assertInstanceof('Vespolina\\Entity\\Product\\Product', $variations['variant1']); // next goal is to be able to select a product variation and add it to the cart }