public function testProperties() { $subtotal = new Subtotal(); $this->assertEquals(Subtotal::TYPE_SUBTOTAL, $subtotal->setType(Subtotal::TYPE_SUBTOTAL)->getType()); $this->assertEquals('Subtotal', $subtotal->setLabel('Subtotal')->getLabel()); $this->assertEquals('USD', $subtotal->setCurrency('USD')->getCurrency()); $this->assertEquals(999.99, $subtotal->setAmount(999.99)->getAmount()); }
public function testProcessValidData() { $subtotal = new Subtotal(); $amount = 42; $subtotal->setType(Subtotal::TYPE_SUBTOTAL); $subtotal->setAmount($amount); $subtotals = new ArrayCollection([$subtotal]); $this->subtotalsProvider->expects($this->any())->method('getSubtotals')->willReturn($subtotals); $this->request->setMethod('POST'); $this->form->expects($this->once())->method('submit')->with($this->request); $this->form->expects($this->once())->method('isValid')->will($this->returnValue(true)); $this->manager->expects($this->once())->method('persist')->with($this->entity); $this->manager->expects($this->once())->method('flush'); $this->assertTrue($this->handler->process($this->entity)); $propertyAccessor = PropertyAccess::createPropertyAccessor(); foreach ($subtotals as $subtotal) { $this->assertEquals($amount, $propertyAccessor->getValue($this->entity, $subtotal->getType())); } }
/** * Get order subtotal * * @param Order $order * * @return Subtotal */ protected function getSubtotal(Order $order) { $subtotal = new Subtotal(); $subtotal->setType(Subtotal::TYPE_SUBTOTAL); $translation = sprintf('orob2b.order.subtotals.%s', $subtotal->getType()); $subtotal->setLabel($this->translator->trans($translation)); $subtotalAmount = 0.0; foreach ($order->getLineItems() as $lineItem) { if (!$lineItem->getPrice()) { continue; } $rowTotal = $lineItem->getPrice()->getValue(); if ($lineItem->getPriceType() === OrderLineItem::PRICE_TYPE_UNIT) { $rowTotal *= $lineItem->getQuantity(); } if ($order->getCurrency() !== $lineItem->getPrice()->getCurrency()) { $rowTotal *= $this->getExchangeRate($lineItem->getPrice()->getCurrency(), $order->getCurrency()); } $subtotalAmount += $rowTotal; } $subtotal->setAmount($subtotalAmount); $subtotal->setCurrency($order->getCurrency()); return $subtotal; }
/** * @param float $subtotalAmount */ protected function assertCalculateSubtotalsCalled($subtotalAmount) { $subtotal = new Subtotal(); $subtotal->setType(Subtotal::TYPE_SUBTOTAL)->setAmount($subtotalAmount); $this->subtotalsProvider->expects($this->once())->method('getSubtotals')->willReturn(new ArrayCollection([$subtotal])); }