Add missing _gmt date fields to customers report response items.

This commit is contained in:
Jeff Stieler 2018-12-20 16:19:40 -07:00
parent 1a4b890660
commit 737331dd3b
2 changed files with 33 additions and 18 deletions

View File

@ -116,9 +116,14 @@ class WC_Admin_REST_Reports_Customers_Controller extends WC_REST_Reports_Control
* @return WP_REST_Response
*/
public function prepare_item_for_response( $report, $request ) {
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
$data = $this->add_additional_fields_to_object( $report, $request );
$data = $this->filter_response_by_context( $data, $context );
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
$data = $this->add_additional_fields_to_object( $report, $request );
$data['date_registered_gmt'] = wc_rest_prepare_date_response( $data['date_registered'] );
$data['date_registered'] = wc_rest_prepare_date_response( $data['date_registered'], false );
$data['date_last_active_gmt'] = wc_rest_prepare_date_response( $data['date_last_active'] );
$data['date_last_active'] = wc_rest_prepare_date_response( $data['date_last_active'], false );
$data = $this->filter_response_by_context( $data, $context );
// Wrap the data in a response object.
$response = rest_ensure_response( $data );
$response->add_links( $this->prepare_links( $report ) );

View File

@ -46,6 +46,28 @@ class WC_Tests_API_Reports_Customers extends WC_REST_Unit_Test_Case {
$this->assertArrayHasKey( $this->endpoint, $routes );
}
/**
* Asserts the report item schema is correct.
*
* @param array $schema Item to check schema.
*/
public function assert_report_item_schema( $schema ) {
$this->assertArrayHasKey( 'customer_id', $schema );
$this->assertArrayHasKey( 'user_id', $schema );
$this->assertArrayHasKey( 'name', $schema );
$this->assertArrayHasKey( 'username', $schema );
$this->assertArrayHasKey( 'country', $schema );
$this->assertArrayHasKey( 'city', $schema );
$this->assertArrayHasKey( 'postcode', $schema );
$this->assertArrayHasKey( 'date_registered', $schema );
$this->assertArrayHasKey( 'date_registered_gmt', $schema );
$this->assertArrayHasKey( 'date_last_active', $schema );
$this->assertArrayHasKey( 'date_last_active_gmt', $schema );
$this->assertArrayHasKey( 'orders_count', $schema );
$this->assertArrayHasKey( 'total_spend', $schema );
$this->assertArrayHasKey( 'avg_order_value', $schema );
}
/**
* Test reports schema.
*
@ -59,21 +81,8 @@ class WC_Tests_API_Reports_Customers extends WC_REST_Unit_Test_Case {
$data = $response->get_data();
$properties = $data['schema']['properties'];
$this->assertEquals( 14, count( $properties ) );
$this->assertArrayHasKey( 'customer_id', $properties );
$this->assertArrayHasKey( 'user_id', $properties );
$this->assertArrayHasKey( 'name', $properties );
$this->assertArrayHasKey( 'username', $properties );
$this->assertArrayHasKey( 'country', $properties );
$this->assertArrayHasKey( 'city', $properties );
$this->assertArrayHasKey( 'postcode', $properties );
$this->assertArrayHasKey( 'date_registered', $properties );
$this->assertArrayHasKey( 'date_registered_gmt', $properties );
$this->assertArrayHasKey( 'date_last_active', $properties );
$this->assertArrayHasKey( 'date_last_active_gmt', $properties );
$this->assertArrayHasKey( 'orders_count', $properties );
$this->assertArrayHasKey( 'total_spend', $properties );
$this->assertArrayHasKey( 'avg_order_value', $properties );
$this->assertCount( 14, $properties );
$this->assert_report_item_schema( $properties );
}
/**
@ -141,5 +150,6 @@ class WC_Tests_API_Reports_Customers extends WC_REST_Unit_Test_Case {
$this->assertEquals( $test_customers[0]->get_id(), $reports[0]['user_id'] );
$this->assertEquals( 1, $reports[0]['orders_count'] );
$this->assertEquals( 100, $reports[0]['total_spend'] );
$this->assert_report_item_schema( $reports[0] );
}
}