2018-01-12 19:54:55 +00:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Class WC_Tests_Admin_Report file.
|
|
|
|
*
|
|
|
|
* @package WooCommerce\Tests\Admin\Reports
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Tests for the WC_Admin_Report class.
|
|
|
|
*/
|
|
|
|
class WC_Tests_Admin_Report extends WC_Unit_Test_Case {
|
|
|
|
|
|
|
|
/**
|
2018-03-12 18:20:58 +00:00
|
|
|
* Load the necessary files, as they're not automatically loaded by WooCommerce.
|
2018-01-12 19:54:55 +00:00
|
|
|
*
|
|
|
|
*/
|
2018-03-12 18:20:58 +00:00
|
|
|
public static function setUpBeforeClass() {
|
|
|
|
include_once WC_Unit_Tests_Bootstrap::instance()->plugin_dir . '/includes/admin/reports/class-wc-admin-report.php';
|
|
|
|
}
|
2018-01-12 19:54:55 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Clear cached report data.
|
|
|
|
*
|
|
|
|
* @before
|
|
|
|
*/
|
|
|
|
public function clear_transients() {
|
|
|
|
delete_transient( 'wc_admin_report' );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test: get_order_report_data
|
|
|
|
*/
|
|
|
|
public function test_get_order_report_data() {
|
2019-05-01 22:05:00 +00:00
|
|
|
$order = WC_Helper_Order::create_order();
|
2018-01-12 19:54:55 +00:00
|
|
|
$order->set_status( 'completed' );
|
|
|
|
$order->save();
|
|
|
|
|
|
|
|
$report = new WC_Admin_Report();
|
2019-05-01 22:05:00 +00:00
|
|
|
$data = $report->get_order_report_data(
|
|
|
|
array(
|
|
|
|
'data' => array(
|
|
|
|
'ID' => array(
|
|
|
|
'type' => 'post_data',
|
|
|
|
'function' => 'COUNT',
|
|
|
|
'name' => 'total_orders',
|
|
|
|
),
|
2018-01-12 19:54:55 +00:00
|
|
|
),
|
2019-05-01 22:05:00 +00:00
|
|
|
)
|
|
|
|
);
|
2018-01-12 19:54:55 +00:00
|
|
|
|
|
|
|
$this->assertEquals( 1, $data->total_orders, 'Expected to see one completed order in the report.' );
|
2019-03-13 17:01:53 +00:00
|
|
|
WC_Admin_Report::maybe_update_transients();
|
2018-01-12 19:54:55 +00:00
|
|
|
$this->assertNotEmpty( get_transient( 'wc_admin_report' ), 'Results should be cached in a transient.' );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test: get_order_report_data
|
|
|
|
*/
|
|
|
|
public function test_get_order_report_data_returns_empty_string_if_data_is_empty() {
|
|
|
|
$report = new WC_Admin_Report();
|
|
|
|
|
|
|
|
add_filter( 'woocommerce_reports_get_order_report_data_args', '__return_empty_string' );
|
|
|
|
|
|
|
|
$this->assertEmpty( $report->get_order_report_data() );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test: get_order_report_data
|
|
|
|
*/
|
|
|
|
public function test_get_order_report_data_for_post_meta() {
|
2019-05-01 22:05:00 +00:00
|
|
|
$order = WC_Helper_Order::create_order();
|
2018-01-12 19:54:55 +00:00
|
|
|
$order->set_status( 'completed' );
|
|
|
|
$order->save();
|
|
|
|
|
|
|
|
$report = new WC_Admin_Report();
|
2019-05-01 22:05:00 +00:00
|
|
|
$data = $report->get_order_report_data(
|
|
|
|
array(
|
|
|
|
'data' => array(
|
|
|
|
'_billing_first_name' => array(
|
|
|
|
'type' => 'meta',
|
|
|
|
'function' => null,
|
|
|
|
'name' => 'customer_name',
|
|
|
|
),
|
2018-01-12 19:54:55 +00:00
|
|
|
),
|
2019-05-01 22:05:00 +00:00
|
|
|
)
|
|
|
|
);
|
2018-01-12 19:54:55 +00:00
|
|
|
|
|
|
|
$this->assertEquals( $order->get_billing_first_name(), $data->customer_name );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test: get_order_report_data
|
|
|
|
*/
|
|
|
|
public function test_get_order_report_data_for_parent_meta() {
|
|
|
|
$order = WC_Helper_Order::create_order();
|
2019-05-01 22:05:00 +00:00
|
|
|
$refund = wc_create_refund(
|
|
|
|
array(
|
|
|
|
'order_id' => $order->get_id(),
|
|
|
|
)
|
|
|
|
);
|
2018-01-12 19:54:55 +00:00
|
|
|
|
|
|
|
$report = new WC_Admin_Report();
|
2019-05-01 22:05:00 +00:00
|
|
|
$data = $report->get_order_report_data(
|
|
|
|
array(
|
|
|
|
'data' => array(
|
|
|
|
'_order_total' => array(
|
|
|
|
'type' => 'parent_meta',
|
|
|
|
'function' => '',
|
|
|
|
'name' => 'total_refund',
|
|
|
|
),
|
2018-01-12 19:54:55 +00:00
|
|
|
),
|
2019-05-01 22:05:00 +00:00
|
|
|
)
|
|
|
|
);
|
2018-01-12 19:54:55 +00:00
|
|
|
|
|
|
|
$this->assertEquals( $order->get_total(), $data->total_refund );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test: get_order_report_data
|
|
|
|
*/
|
|
|
|
public function test_get_order_report_data_for_post_data() {
|
2019-05-01 22:05:00 +00:00
|
|
|
$order = WC_Helper_Order::create_order();
|
2018-01-12 19:54:55 +00:00
|
|
|
$order->set_status( 'completed' );
|
|
|
|
$order->save();
|
|
|
|
|
|
|
|
$report = new WC_Admin_Report();
|
2019-05-01 22:05:00 +00:00
|
|
|
$data = $report->get_order_report_data(
|
|
|
|
array(
|
|
|
|
'data' => array(
|
|
|
|
'post_status' => array(
|
|
|
|
'type' => 'post_data',
|
|
|
|
'function' => null,
|
|
|
|
'name' => 'post_status',
|
|
|
|
),
|
2018-01-12 19:54:55 +00:00
|
|
|
),
|
2019-05-01 22:05:00 +00:00
|
|
|
)
|
|
|
|
);
|
2018-01-12 19:54:55 +00:00
|
|
|
|
|
|
|
$this->assertEquals( 'wc-completed', $data->post_status );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test: get_order_report_data
|
|
|
|
*/
|
|
|
|
public function test_get_order_report_data_for_order_items() {
|
|
|
|
$product = WC_Helper_Product::create_simple_product();
|
|
|
|
$order = WC_Helper_Order::create_order( 0, $product->get_id() );
|
|
|
|
$order->set_status( 'completed' );
|
|
|
|
$order->save();
|
|
|
|
|
|
|
|
$report = new WC_Admin_Report();
|
2019-05-01 22:05:00 +00:00
|
|
|
$data = $report->get_order_report_data(
|
|
|
|
array(
|
|
|
|
'data' => array(
|
|
|
|
'order_item_name' => array(
|
|
|
|
'type' => 'order_item',
|
|
|
|
'function' => null,
|
|
|
|
'name' => 'name',
|
|
|
|
),
|
2018-01-12 19:54:55 +00:00
|
|
|
),
|
2019-05-01 22:05:00 +00:00
|
|
|
)
|
|
|
|
);
|
2018-01-12 19:54:55 +00:00
|
|
|
|
|
|
|
$this->assertEquals( $product->get_name(), $data->name );
|
|
|
|
}
|
|
|
|
}
|