set_name( 'Test Product' ); $product->save(); $variation = new WC_Product_Variation(); $variation->set_name( 'Test Variation' ); $variation->set_parent_id( $product->get_id() ); $variation->set_regular_price( 10 ); $variation->set_attributes( array( 'pa_color' => 'green' ) ); $variation->save(); $order = WC_Helper_Order::create_order( 1, $variation ); $order->set_status( 'completed' ); $order->save(); $data_store = new WC_Admin_Reports_Variations_Data_Store(); $start_time = date( 'Y-m-d H:00:00', $order->get_date_created()->getOffsetTimestamp() ); $end_time = date( 'Y-m-d H:00:00', $order->get_date_created()->getOffsetTimestamp() + HOUR_IN_SECONDS ); $args = array( 'after' => $start_time, 'before' => $end_time, ); // Test retrieving the stats through the data store. $data = $data_store->get_data( $args ); $expected_data = (object) array( 'total' => 1, 'pages' => 1, 'page_no' => 1, 'data' => array( 0 => array( 'product_id' => $product->get_id(), 'variation_id' => $variation->get_id(), 'items_sold' => 4, 'net_revenue' => 40.0, // $10 * 4. 'orders_count' => 1, 'extended_info' => new ArrayObject(), ), ), ); $this->assertEquals( $expected_data, $data ); // Test retrieving the stats through the query class. $query = new WC_Admin_Reports_Variations_Query( $args ); $this->assertEquals( $expected_data, $query->get_data() ); } /** * Test the extended ifo. * * @since 3.5.0 */ public function test_extended_info() { WC_Helper_Reports::reset_stats_dbs(); // Populate all of the data. $product = new WC_Product_Variable(); $product->set_name( 'Test Product' ); $product->set_regular_price( 25 ); $attribute = new WC_Product_Attribute(); $attribute->set_id( 0 ); $attribute->set_name( 'pa_color' ); $attribute->set_options( explode( WC_DELIMITER, 'green | red' ) ); $attribute->set_visible( false ); $attribute->set_variation( true ); $product->set_attributes( array( $attribute ) ); $product->save(); $variation = new WC_Product_Variation(); $variation->set_name( 'Test Variation' ); $variation->set_parent_id( $product->get_id() ); $variation->set_regular_price( 10 ); $variation->set_attributes( array( 'pa_color' => 'green' ) ); $variation->set_manage_stock( true ); $variation->set_stock_quantity( 25 ); $variation->save(); $order = WC_Helper_Order::create_order( 1, $variation ); $order->set_status( 'completed' ); $order->save(); $data_store = new WC_Admin_Reports_Variations_Data_Store(); $start_time = date( 'Y-m-d H:00:00', $order->get_date_created()->getOffsetTimestamp() ); $end_time = date( 'Y-m-d H:00:00', $order->get_date_created()->getOffsetTimestamp() + HOUR_IN_SECONDS ); $args = array( 'after' => $start_time, 'before' => $end_time, 'extended_info' => 1, ); // Test retrieving the stats through the data store. $data = $data_store->get_data( $args ); $expected_data = (object) array( 'total' => 1, 'pages' => 1, 'page_no' => 1, 'data' => array( 0 => array( 'product_id' => $product->get_id(), 'variation_id' => $variation->get_id(), 'items_sold' => 4, 'net_revenue' => 40.0, // $10 * 4. 'orders_count' => 1, 'extended_info' => array( 'name' => $variation->get_name(), 'image' => $variation->get_image(), 'permalink' => $variation->get_permalink(), 'price' => (float) $variation->get_price(), 'stock_status' => $variation->get_stock_status(), 'stock_quantity' => $variation->get_stock_quantity() - 4, // subtract the ones purchased. 'low_stock_amount' => get_option( 'woocommerce_notify_low_stock_amount' ), 'attributes' => array( 0 => array( 'id' => 0, 'name' => 'color', 'option' => 'green', ), ), ), ), ), ); $this->assertEquals( $expected_data, $data ); } }