function testAddArbitraryQuantityToItem()
 {
     /* Add an item to the cart */
     $this->get('product-2b/add');
     /* See what's in the cart */
     $items = ShoppingCart::get_items();
     /* There is 1 item in the cart, with a quantity of 1 */
     $this->assertEquals(count($items), 1, 'There is 1 item in the cart');
     $this->assertEquals($items[0]->getQuantity(), 1, 'There is a quantity of 1 for the item in the cart');
     /* Let's add 7 more of the same product to the cart */
     ShoppingCart::add_item($items[0]->getIDAttribute(), 7);
     /* See what's in the cart once more */
     $items = ShoppingCart::get_items();
     /* There is still 1 item in the cart, with a quantity of 8 */
     $this->assertEquals(count($items), 1, 'There is 1 item in the cart');
     $this->assertEquals($items[0]->getQuantity(), 8, 'There is a quantity of 1 for the item in the cart');
     /* Clear the shopping cart */
     ShoppingCart::clear();
 }
 function additem()
 {
     $itemId = $this->urlParams['ID'];
     if ($itemId) {
         ShoppingCart::add_item($itemId);
         if (!$this->isAjax()) {
             Director::redirectBack();
         }
     }
 }
 /**
  * Either increments the count or creates a new item.
  */
 function additem($request)
 {
     if ($itemId = $request->param('ID') && ($product = $this->buyableFromURL())) {
         if ($item = ShoppingCart::get_item($this->urlFilter())) {
             ShoppingCart::add_item($item);
             return self::return_data("success", "Extra item added");
             //TODO: i18n
         } else {
             if ($orderitem = $this->create_order_item($product, 1, self::get_clean_param_array($this->getRequest()->getVars()))) {
                 ShoppingCart::add_new_item($orderitem);
                 return self::return_data("success", "Item added");
                 //TODO: i18n
             }
         }
     }
     return self::return_data("failure", "Item could not be added");
     //TODO: i18n
 }