public function testDelete() { Config::inst()->update('FlatTaxModifier', 'rate', 0.25); Config::inst()->update('Order', 'modifiers', array('FlatTaxModifier')); $order = Order::create(); $shirt = $this->objFromFixture("Product", "tshirt"); $mp3player = $this->objFromFixture("Product", "mp3player"); $order->Items()->add($shirt->createItem(3)); $order->Items()->add($mp3player->createItem(1)); $order->write(); $order->calculate(); $statusLogId = OrderStatusLog::create(array('Title' => 'Test status log', 'OrderID' => $order->ID))->write(); $paymentId = Payment::create(array('OrderID' => $order->ID))->init('Manual', 343.75, 'NZD')->write(); $this->assertEquals(4, $order->Items()->Quantity()); $this->assertEquals(1, $order->Modifiers()->count()); $this->assertEquals(1, $order->OrderStatusLogs()->count()); $this->assertEquals(1, $order->Payments()->count()); $itemIds = Product_OrderItem::get()->filter('OrderID', $order->ID)->column('ID'); $modifierIds = OrderModifier::get()->filter('OrderID', $order->ID)->column('ID'); $order->delete(); // Items should no longer be linked to order $this->assertEquals(0, $order->Items()->count()); $this->assertEquals(0, $order->Modifiers()->count()); $this->assertEquals(0, $order->OrderStatusLogs()->count()); $this->assertEquals(0, $order->Payments()->count()); // Ensure the order items have been deleted! $this->assertEquals(0, Product_OrderItem::get()->filter('ID', $itemIds)->count()); $this->assertEquals(0, OrderModifier::get()->filter('ID', $modifierIds)->count()); $this->assertEquals(0, OrderStatusLog::get()->filter('ID', $statusLogId)->count()); // Keep the payment… it might be relevant for book keeping $this->assertEquals(1, Payment::get()->filter('ID', $paymentId)->count()); }
/** * Removes a modifier from the cart * @param Int/ OrderModifier * @return Boolean */ public function addModifier($modifier) { if (is_numeric($modifier)) { $modifier = OrderModifier::get()->byID($modifier); } elseif (!is_a($modifier, Object::getCustomClass("OrderModifier"))) { user_error("Bad parameter provided to ShoppingCart::addModifier", E_USER_WARNING); } if (!$modifier) { $this->addMessage(_t("Order.MODIFIERNOTFOUND", "Modifier could not be found."), 'bad'); return false; } $modifier->HasBeenRemoved = 0; $modifier->write(); $this->addMessage(_t("Order.MODIFIERREMOVED", "Added."), 'good'); return true; }