function it_should_delegate_calculation_to_a_correct_calculator($calculator, TaxRateInterface $rate) { $rate->getCalculator()->willReturn('default'); $calculator->calculate(100, $rate)->shouldBeCalled()->willReturn(23); $this->calculate(100, $rate)->shouldReturn(23); }
function it_should_complain_if_correct_calculator_doesnt_exist_for_given_rate(TaxRateInterface $rate, CalculatorInterface $calculator) { $this->registerCalculator('default', $calculator); $rate->getCalculator()->willReturn('custom'); $this->shouldThrow('InvalidArgumentException')->duringCalculate(100, $rate); }
/** * {@inheritdoc} */ public function calculate($base, TaxRateInterface $rate) { /** @var CalculatorInterface $calculator */ $calculator = $this->calculatorsRegistry->get($rate->getCalculator()); return $calculator->calculate($base, $rate); }
/** * {@inheritdoc} */ public function calculate($base, TaxRateInterface $rate) { $calculator = $this->getCalculator($rate->getCalculator()); return $calculator->calculate($base, $rate); }