Beispiel #1
0
 protected function getTestOrder($new_order = false)
 {
     xdebug_stop_code_coverage(false);
     if ($this->order && !$new_order) {
         return $this->order;
     }
     \XLite\Core\Auth::getInstance()->logoff();
     $this->testOrder['date'] = time();
     $order = \XLite\Core\Database::getRepo('XLite\\Model\\Order')->insert($this->testOrder);
     $order->setCurrency(\XLite\Core\Database::getRepo('XLite\\Model\\Currency')->find(840));
     if ($this->orderProducts) {
         foreach ($this->orderProducts as $sku) {
             $product = $this->getProductBySku($sku);
             $this->assertNotNull($product, 'Product with SKU ' . $sku . ' not found!');
             $item = new \XLite\Model\OrderItem();
             $item->setProduct($product);
             $item->setAmount(1);
             $order->addItem($item);
         }
     } else {
         $item = new \XLite\Model\OrderItem();
         $item->setProduct($this->getProduct());
         $item->setAmount(1);
         $order->addItem($item);
     }
     $list = \XLite\Core\Database::getRepo('XLite\\Model\\Profile')->findAll();
     $found = false;
     foreach ($list as $p) {
         if (!$p->getOrder() && $p->getLogin() == '*****@*****.**') {
             $order->setProfileCopy($p);
             $found = true;
             break;
         }
     }
     $this->assertTrue($found, 'test order\'s profile is not found');
     $order->calculate();
     \XLite\Core\Database::getRepo('XLite\\Model\\Order')->update($order);
     if (!$this->order || $new_order) {
         $this->orders[] = $order;
     }
     $this->order = $order;
     xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
     return $order;
 }
Beispiel #2
0
 /**
  * Create a cart with fake item
  *
  * @param \XLite\Model\Profile $profile Customer's profile for whom the cart is created for
  * @param \XLite\Model\Payment\Method $paymentMethod Payment methood
  * @param \XLite\Model\Currency $currency Currency
  * @param $total Cart total
  * @param $itemName Name of the fake item
  * @param $itemSku SKU of the fake item
  *
  * @return \XLite\Model\Cart
  */
 public function createFakeCart(\XLite\Model\Profile $profile, \XLite\Model\Payment\Method $paymentMethod, \XLite\Model\Currency $currency, $total, $itemName, $itemSku)
 {
     $cart = new \XLite\Model\Cart();
     $cart->setTotal($total);
     $cart->setDate(time());
     $cart->setOrderNumber(\XLite\Core\Database::getRepo('XLite\\Model\\Order')->findNextOrderNumber());
     $cart->setProfile($profile);
     $cart->setCurrency($currency);
     $cart->setPaymentMethod($paymentMethod, $total);
     \XLite\Core\Database::getEM()->persist($cart);
     \XLite\Core\Database::getEM()->flush();
     $item = new \XLite\Model\OrderItem();
     $item->setName($itemName);
     $item->setSku($itemSku);
     $item->setPrice($total);
     $item->setAmount(1);
     $item->setTotal($total);
     $item->setXpcFakeItem(true);
     \XLite\Core\Database::getEM()->persist($item);
     \XLite\Core\Database::getEM()->flush();
     $cart->addItem($item);
     if (count($cart->getPaymentTransactions()) == 0) {
         // We cannot use first open transaction later, so we need to create it
         $transaction = new \XLite\Model\Payment\Transaction();
         $transaction->setPaymentMethod($paymentMethod);
         $transaction->setValue($total);
         $cart->addPaymentTransactions($transaction);
         $transaction->setOrder($cart);
     }
     return $cart;
 }
Beispiel #3
0
 public function testGetEventFingerprint()
 {
     $order = $this->getTestOrder();
     $product = $this->getProduct();
     $product->getInventory()->setEnabled(false);
     $etalon = array('items' => array(array('item_id' => $order->getItems()->get(0)->getItemId(), 'key' => 'product.' . $product->getProductId(), 'object_type' => 'product', 'object_id' => $product->getProductId(), 'options' => array(), 'quantity' => 1)));
     $this->assertEquals($etalon, $order->getEventFingerprint(), 'check fingerprint');
     $item = new \XLite\Model\OrderItem();
     $item->setProduct($product);
     $item->setAmount(2);
     $item->setPrice($product->getPrice());
     $this->assertTrue($order->addItem($item), 'check add item');
     $etalon['items'][0]['quantity'] = 3;
     $this->assertEquals($etalon, $order->getEventFingerprint(), 'check fingerprint #2');
     $order->getItems()->clear();
     $etalon['items'] = array();
     $this->assertEquals($etalon, $order->getEventFingerprint(), 'check fingerprint (empty)');
 }
Beispiel #4
0
 /**
  * prepareCart
  *
  * @return void
  * @access protected
  * @see    ____func_see____
  * @since  1.0.0
  */
 protected function prepareCart()
 {
     $cart = \XLite\Model\Cart::getInstance();
     $cart->setItems(new \Doctrine\Common\Collections\ArrayCollection());
     $item = new \XLite\Model\OrderItem();
     $item->setProduct($this->getProductWithInventory());
     $item->setAmount(self::CART_AMOUNT_WITH_INVENTORY);
     $cart->addItem($item);
     $item = new \XLite\Model\OrderItem();
     $item->setProduct($this->getProductWithoutInventory());
     $item->setAmount(self::CART_AMOUNT_WITHOUT_INVENTORY);
     $cart->addItem($item);
 }