setCurrency() public method

public setCurrency ( Sonata\Component\Currency\CurrencyInterface $currency )
$currency Sonata\Component\Currency\CurrencyInterface
 /**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     $currency = new Currency();
     $currency->setLabel('EUR');
     $basket = new Basket();
     $basket->setCurrency($currency);
     $basket->setProductPool($this->getProductPool());
     $nbCustomers = 100;
     $products = array($this->getReference('php_plush_blue_goodie_product'), $this->getReference('php_plush_green_goodie_product'), $this->getReference('travel_japan_small_product'), $this->getReference('travel_japan_medium_product'), $this->getReference('travel_japan_large_product'), $this->getReference('travel_japan_extra_large_product'), $this->getReference('travel_quebec_small_product'), $this->getReference('travel_quebec_medium_product'), $this->getReference('travel_quebec_large_product'), $this->getReference('travel_quebec_extra_large_product'), $this->getReference('travel_paris_small_product'), $this->getReference('travel_paris_medium_product'), $this->getReference('travel_paris_large_product'), $this->getReference('travel_paris_extra_large_product'), $this->getReference('travel_switzerland_small_product'), $this->getReference('travel_switzerland_medium_product'), $this->getReference('travel_switzerland_large_product'), $this->getReference('travel_switzerland_extra_large_product'));
     for ($i = 1; $i <= $nbCustomers; $i++) {
         $customer = $this->generateCustomer($manager, $i);
         $customerProducts = array();
         $orderProductsKeys = array_rand($products, rand(1, count($products)));
         if (is_array($orderProductsKeys)) {
             foreach ($orderProductsKeys as $orderProductKey) {
                 $customerProducts[] = $products[$orderProductKey];
             }
         } else {
             $customerProducts = array($products[$orderProductsKeys]);
         }
         $order = $this->createOrder($basket, $customer, $customerProducts, $manager, $i);
         $this->createTransaction($order, $manager);
         $this->createInvoice($order, $manager);
         if (!($i % 10)) {
             $manager->flush();
         }
     }
     $manager->flush();
 }
示例#2
0
 public function testTotal()
 {
     $currency = $this->getMock('Sonata\\Component\\Currency\\Currency');
     $basket = new Basket();
     $basket->setCurrency($currency);
     $manager = $this->getMock('Sonata\\Component\\Product\\ProductManagerInterface');
     $manager->expects($this->any())->method('getClass')->will($this->returnValue('BasketTest_Product'));
     $productProvider = new ProductProviderTest($this->getMock('JMS\\Serializer\\SerializerInterface'));
     $productProvider->setCurrencyPriceCalculator(new CurrencyPriceCalculator());
     $productProvider->setEventDispatcher($this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'));
     $productDefinition = new ProductDefinition($productProvider, $manager);
     $product = $this->getMockProduct();
     $product->expects($this->any())->method('isRecurrentPayment')->will($this->returnValue(false));
     $pool = new Pool();
     $pool->addProduct('product_code', $productDefinition);
     $basket->setProductPool($pool);
     $this->assertFalse($basket->hasProduct($product), '::hasProduct() - The product is not present in the basket');
     $basketElement = new BasketElement();
     $basketElement->setProductDefinition($productDefinition);
     $basketElement->setProduct('product_code', $product);
     $basket->addBasketElement($basketElement);
     $this->assertTrue($basket->hasProduct($product), '::hasProduct() - The product is present in the basket');
     $this->assertEquals(1, $basketElement->getQuantity(), '::getQuantity() - return 1');
     $this->assertEquals(15, $basketElement->getUnitPrice(false), '::getQuantity() - return 2');
     $this->assertEquals(15, $basketElement->getTotal(false), '::getQuantity() - return 2');
     $this->assertEquals(15, $basket->getTotal(false), '::getTotal() w/o vat return 15');
     $this->assertEquals(17.94, $basket->getTotal(true), '::getTotal() w/ vat return 18');
     $basketElement->setQuantity(2);
     $this->assertEquals(2, $basketElement->getQuantity(), '::getQuantity() - return 2');
     $this->assertEquals(15, $basketElement->getUnitPrice(false), '::getQuantity() - return 2');
     $this->assertEquals(30, $basketElement->getTotal(false), '::getQuantity() - return 2');
     $this->assertEquals(30, $basket->getTotal(false), '::getTotal() w/o vat return 30');
     $this->assertEquals(35.88, $basket->getTotal(true), '::getTotal() w/ vat return true');
     // Recurrent payments
     $this->assertEquals(0, $basket->getTotal(false, true), '::getTotal() for recurrent payments only');
     $newProduct = $this->getMockProduct();
     $newProduct->expects($this->any())->method('isRecurrentPayment')->will($this->returnValue(true));
     $basketElement = new BasketElement();
     $basketElement->setProduct('product_code', $newProduct);
     $basket->addBasketElement($basketElement);
     $this->assertEquals(30, $basket->getTotal(false, false), '::getTotal() for non-recurrent payments only');
     $basket->removeElement($basketElement);
     // Delivery
     $delivery = new Delivery();
     $basket->setDeliveryMethod($delivery);
     $this->assertEquals(150, $basket->getTotal(false), '::getTotal() - return 150');
     $this->assertEquals(179.4, $basket->getTotal(true), '::getTotal() w/o vat return 179.40');
     $this->assertEquals(29.4, $basket->getVatAmount(), '::getVatAmount() w/o vat return 29.4');
 }
 /**
  * @return void
  */
 public function testOrder()
 {
     $basket = new Basket();
     $customer = $this->getMock('Sonata\\Component\\Customer\\CustomerInterface');
     $billingAddress = $this->getMock('Sonata\\Component\\Customer\\AddressInterface');
     $deliveryMethod = $this->getMock('Sonata\\Component\\Delivery\\ServiceDeliveryInterface');
     $deliveryMethod->expects($this->exactly(2))->method('isAddressRequired')->will($this->returnValue(true));
     $deliveryAddress = $this->getMock('Sonata\\Component\\Customer\\AddressInterface');
     $paymentMethod = $this->getMock('Sonata\\Component\\Payment\\PaymentInterface');
     $basket->setCustomer($customer);
     $basket->setBillingAddress($billingAddress);
     $basket->setDeliveryMethod($deliveryMethod);
     $basket->setDeliveryAddress($deliveryAddress);
     $basket->setPaymentMethod($paymentMethod);
     $currency = new Currency();
     $currency->setLabel('EUR');
     $basket->setCurrency($currency);
     $order = $this->getBasketTransform()->transformIntoOrder($basket);
     $this->assertInstanceOf('Sonata\\Component\\Order\\OrderInterface', $order, '::transformIntoOrder() returns an OrderInstance object');
 }