public function testGetRecursivePriceWithOptions() { $choice = new \SpeckCatalog\Model\Choice\Relational(); $option = new \SpeckCatalog\Model\Option\Relational(); $option->setRequired(true); $nestedChoice = new \SpeckCatalog\Model\Choice\Relational(); $optionMock = $this->getMockBuilder('\\SpeckCatalog\\Model\\Option\\Relational')->getMock(); $optionMock->expects($this->atLeastOnce())->method('getAdjustedPrice')->will($this->returnValue(1000)); $choice->setParent($optionMock); $option->addChoice($nestedChoice); $choice->addOption($option); $this->assertEquals(0, $choice->getRecursivePrice(1000)); $choice->setPriceDiscountFixed(100); $this->assertEquals(-100, $choice->getRecursivePrice(1000)); $choice->setPriceDiscountFixed(null); $nestedChoice->setPriceDiscountFixed(100); $this->assertEquals(-100, $choice->getRecursivePrice(1000)); $nestedChoice->setPriceDiscountFixed(null); $nestedChoice->setPriceDiscountPercent(10); $this->assertEquals(-100, $choice->getRecursivePrice(1000)); $nestedChoice->setPriceDiscountPercent(null); $nestedChoice->setPriceOverrideFixed(500); $this->assertEquals(-500, $choice->getRecursivePrice(1000)); $nestedChoice->setPriceOverrideFixed(null); $nestedChoice->setPriceNoCharge(1); $this->assertEquals(-1000, $choice->getRecursivePrice(1000)); }