function testCalculations() { $mp3player = $this->objFromFixture('Product', 'mp3player'); $this->get(ShoppingCart::add_item_link($mp3player->ID)); $cart = ShoppingCart::current_order(); $this->assertEquals($cart->Total(), 215); }
function testProductVersionDoesntChangeInOrder() { $productSocks = $this->objFromFixture('Product', 'socks'); //add item to cart $this->get(ShoppingCart::add_item_link($productSocks->ID)); $currentorder = ShoppingCart::current_order(); $itembefore = DataObject::get_one("Product_OrderItem", "\"OrderID\" = " . $currentorder->ID); $this->assertEquals($itembefore->Total(), 8); //update product details $productSocks->Price = 9; $productSocks->write(); $this->assertEquals($itembefore->Total(), 9); //total is updated whilst item is still in cart //check cart product details are not updated //place order //update product details //check order details are not updated }
function testRemoveFromCart() { /* Retrieve the product to compare from fixture */ $product = $this->objFromFixture('Product', 'mp3player'); $anotherproduct = $this->objFromFixture('Product', 'tshirt'); /* add items via url */ $this->get(ShoppingCart::set_quantity_item_link($product->ID, $product->class) . "?quantity=5"); $this->get(ShoppingCart::add_item_link($anotherproduct->ID, $product->class)); /* remove items via url */ $this->get(ShoppingCart::remove_item_link($product->ID, $product->class)); $this->get(ShoppingCart::remove_item_link($anotherproduct->ID, $product->class)); $items = ShoppingCart::get_items(); $this->assertEquals($items->Count(), 1, 'There is 1 item in the cart'); $this->assertEquals($items->First()->Quantity, 4, 'We have 4 mp3 players in the cart.'); ShoppingCart::clear(); //test clearing cart $this->assertEquals(ShoppingCart::get_items(), null, 'Cart is clear'); //items is a databoject set, and will therefore be null when cart is empty. //TODO: remove item not in cart - insanity check }
function IncrementLink() { $varid = $this->item instanceof ProductVariation_OrderItem ? $this->item->ProductVariationID : null; return Convert::raw2att(ShoppingCart::add_item_link($this->item->getProductIDForSerialization(), $varid, $this->parameters)); }
function addLink() { return ShoppingCart::add_item_link($this->_productID, $this->_productVariationID); }
function addLink() { return ShoppingCart::add_item_link($this->_productID, null, $this->linkParameters()); }
function testNoMemberOrder() { //TODO: test configuration that deines non-member orders //adjust configuration to allow non member orders OrderForm::set_user_membership_optional(true); OrderForm::set_force_membership(false); $socks = $this->objFromFixture('Product', 'socks'); $this->get(ShoppingCart::add_item_link($socks->ID)); //add a different product $cart = ShoppingCart::current_order(); $this->placeOrder('Donald', 'Duck', '*****@*****.**', '4 The Strand', null, 'Melbourne', null, 'AU'); $order = DataObject::get_by_id('Order', $cart->ID); $this->assertNotNull($order, 'Order exists'); if ($order) { $this->assertEquals($order->Status, 'Unpaid', 'status is now "unpaid"'); $this->assertEquals($order->MemberID, 0, 'No associated member'); $this->assertEquals($order->Total(), 8, 'grand total'); $this->assertEquals($order->TotalOutstanding(), 8, 'total outstanding'); $this->assertEquals($order->TotalPaid(), 0, 'total outstanding'); $this->assertEquals($order->FirstName, 'Donald', 'order first name'); $this->assertEquals($order->Surname, 'Duck', 'order surname'); $this->assertEquals($order->Email, '*****@*****.**', 'order email'); $this->assertEquals($order->Address, '4 The Strand'); $this->assertNull($order->AddressLine2, 'order address2'); $this->assertEquals($order->City, 'Melbourne', 'order city'); $this->assertNull($order->PostalCode, 'order postcode'); $this->assertEquals($order->Country, 'AU', 'order country'); } ShoppingCart::clear(); //cleanup }