121 lines
3.3 KiB
PHP
121 lines
3.3 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Class WC_Tests_Admin_Dashboard file.
|
||
|
*
|
||
|
* @package WooCommerce\Tests\Admin
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Tests for the WC_Admin_Report class.
|
||
|
*/
|
||
|
class WC_Tests_Admin_Dashboard extends WC_Unit_Test_Case {
|
||
|
|
||
|
/**
|
||
|
* Set up for tests.
|
||
|
*/
|
||
|
public function setUp() {
|
||
|
parent::setUp();
|
||
|
$this->user = $this->factory->user->create(
|
||
|
array(
|
||
|
'role' => 'administrator',
|
||
|
)
|
||
|
);
|
||
|
|
||
|
// Mock http request to performance endpoint.
|
||
|
add_filter( 'rest_pre_dispatch', array( $this, 'mock_rest_responses' ), 10, 3 );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Tear down.
|
||
|
*/
|
||
|
public function tearDown() {
|
||
|
parent::tearDown();
|
||
|
remove_filter( 'rest_pre_dispatch', array( $this, 'mock_rest_responses' ), 10 );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test: get_status_widget
|
||
|
*/
|
||
|
public function test_status_widget() {
|
||
|
wp_set_current_user( $this->user );
|
||
|
$order = WC_Helper_Order::create_order();
|
||
|
$order->set_status( 'completed' );
|
||
|
$order->save();
|
||
|
|
||
|
$this->expectOutputRegex( '/98,765\.00/' );
|
||
|
|
||
|
( new WC_Admin_Dashboard() )->status_widget();
|
||
|
|
||
|
$widget_output = $this->getActualOutput();
|
||
|
|
||
|
$this->assertRegExp( '/page\=wc-admin\&\#038\;path\=\%2Fanalytics\%2Frevenue/', $widget_output );
|
||
|
$this->assertRegExp( '/page\=wc-admin\&\#038\;filter\=single_product/', $widget_output );
|
||
|
$this->assertRegExp( '/page\=wc-admin\&\#038\;type\=lowstock/', $widget_output );
|
||
|
$this->assertRegExp( '/page\=wc-admin\&\#038\;type\=outofstock/', $widget_output );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test: get_status_widget with woo admin disabled.
|
||
|
*/
|
||
|
public function test_status_widget_with_woo_admin_disabled() {
|
||
|
wp_set_current_user( $this->user );
|
||
|
$order = WC_Helper_Order::create_order();
|
||
|
$order->set_status( 'completed' );
|
||
|
$order->save();
|
||
|
|
||
|
add_filter( 'woocommerce_admin_disabled', '__return_true' );
|
||
|
|
||
|
$this->expectOutputRegex( '/50\.00 worth in the/' );
|
||
|
|
||
|
( new WC_Admin_Dashboard() )->status_widget();
|
||
|
|
||
|
$widget_output = $this->getActualOutput();
|
||
|
$this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=orders\&\#038\;range\=month/', $widget_output );
|
||
|
$this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=orders\&\#038\;report\=sales_by_product/', $widget_output );
|
||
|
$this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=stock\&\#038\;report\=low_in_stock/', $widget_output );
|
||
|
$this->assertRegExp( '/page\=wc-reports\&\#038\;tab\=stock\&\#038\;report\=out_of_stock/', $widget_output );
|
||
|
|
||
|
remove_filter( 'woocommerce_admin_disabled', '__return_true' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Helper method to mock rest_do_request method.
|
||
|
*
|
||
|
* @param false $response Request arguments.
|
||
|
* @param WP_REST_Server $rest_server rest server class.
|
||
|
* @param WP_REST_Request $request incoming request.
|
||
|
*
|
||
|
* @return WP_REST_Response|false mocked response or false to let WP perform a regular request.
|
||
|
*/
|
||
|
public function mock_rest_responses( $response, $rest_server, $request ) {
|
||
|
if ( '/wc-analytics/reports/performance-indicators' === $request->get_route() ) {
|
||
|
$response = new WP_REST_Response(
|
||
|
array(
|
||
|
'status' => 200,
|
||
|
)
|
||
|
);
|
||
|
$response->set_data(
|
||
|
array(
|
||
|
array(
|
||
|
'chart' => 'net_revenue',
|
||
|
'value' => 98765.0,
|
||
|
),
|
||
|
)
|
||
|
);
|
||
|
} elseif ( '/wc-analytics/reports/revenue/stats' === $request->get_route() ) {
|
||
|
$response = new WP_REST_Response(
|
||
|
array(
|
||
|
'status' => 200,
|
||
|
)
|
||
|
);
|
||
|
$response->set_data(
|
||
|
array(
|
||
|
'intervals' => array(),
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return $response;
|
||
|
}
|
||
|
}
|