/**
 * Creates a blank order object, or upgrades a draft order
 * @param  APP_Draft_order $draft_order A draft order to be upgraded
 * @return APP_Order                    An order object representing the new order
 */
function appthemes_new_order($draft_order = null)
{
    if (!empty($draft_order)) {
        return APP_Draft_Order::upgrade($draft_order);
    } else {
        return APP_Order_Factory::create();
    }
}
 public function test_register()
 {
     $queue = new APP_Order_Processing();
     $queue->schedule_process();
     $this->assertNotEquals(0, wp_next_scheduled('app_order_processing'));
     $draft = new APP_Draft_Order();
     $draft->complete();
     $new_order = APP_Draft_Order::upgrade($draft);
     $child_order = APP_Order_Factory::duplicate($new_order);
     $child_order->set_gateway('mock-gateway');
     wp_update_post(array('ID' => $child_order->get_id(), 'post_status' => APPTHEMES_ORDER_COMPLETED, 'post_parent' => $new_order->get_id()));
     $child_order->schedule_payment(date('Y-m-d H:i:s', strtotime('-1 day')));
     $items_processed = $queue->process();
     $this->assertEquals(1, $items_processed);
     $order = appthemes_get_order($child_order->get_id(), true);
     $this->assertEquals(APPTHEMES_ORDER_ACTIVATED, $order->get_status());
 }
Beispiel #3
0
 public function test_upgrade_order()
 {
     $order = new APP_Draft_Order();
     $order->set_description('Draft');
     $order->set_gateway('paypal');
     $order->set_currency('EUR');
     // We need an existing order that can be connected to
     $real_order = APP_Order_Factory::create();
     $status = $order->add_item('test', 5, $real_order->get_id());
     $new_real_order = APP_Draft_Order::upgrade($order);
     $this->assertEquals('Draft', $new_real_order->get_description());
     $this->assertEquals('paypal', $new_real_order->get_gateway());
     $this->assertEquals('EUR', $new_real_order->get_currency());
     $this->assertCount(1, $new_real_order->get_items());
     $this->assertEquals(5, $new_real_order->get_total());
 }