function it_returns_correct_adjustments_total_by_type_recursively(AdjustmentInterface $adjustment1, AdjustmentInterface $promotionAdjustment, AdjustmentInterface $taxAdjustment1, AdjustmentInterface $taxAdjustment2, OrderItemUnitInterface $orderItemUnit1, OrderItemUnitInterface $orderItemUnit2) { $adjustment1->getType()->willReturn('tax'); $adjustment1->getAmount()->willReturn(200); $adjustment1->isNeutral()->willReturn(false); $adjustment1->setAdjustable($this)->shouldBeCalled(); $promotionAdjustment->getAmount()->willReturn(30); $promotionAdjustment->isNeutral()->willReturn(false); $taxAdjustment1->getAmount()->willReturn(150); $taxAdjustment1->isNeutral()->willReturn(false); $taxAdjustment2->getAmount()->willReturn(100); $taxAdjustment2->isNeutral()->willReturn(false); $orderItemUnit1->getOrderItem()->willReturn($this->getWrappedObject()); $orderItemUnit1->getTotal()->willReturn(500); $orderItemUnit1->getAdjustments('tax')->willReturn(new ArrayCollection([$taxAdjustment1->getWrappedObject()])); $orderItemUnit1->getAdjustments('promotion')->willReturn(new ArrayCollection([$promotionAdjustment->getWrappedObject()])); $orderItemUnit2->getOrderItem()->willReturn($this->getWrappedObject()); $orderItemUnit2->getTotal()->willReturn(300); $orderItemUnit2->getAdjustments('tax')->willReturn(new ArrayCollection([$taxAdjustment2->getWrappedObject()])); $orderItemUnit2->getAdjustments('promotion')->willReturn(new ArrayCollection()); $this->addAdjustment($adjustment1); $this->addUnit($orderItemUnit1); $this->addUnit($orderItemUnit2); $this->getAdjustmentsTotalRecursively('tax')->shouldReturn(450); $this->getAdjustmentsTotalRecursively('promotion')->shouldReturn(30); }