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; }
/** * 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; }
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)'); }
/** * 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); }