user = $this->factory->user->create( array( 'role' => 'administrator', ) ); } /** * Test route registration. * * @since 3.5.0 */ public function test_register_routes() { $routes = $this->server->get_routes(); $this->assertArrayHasKey( '/wc/v3/reports/orders/totals', $routes ); } /** * Test getting all product reviews. * * @since 3.5.0 */ public function test_get_reports() { wp_set_current_user( $this->user ); $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v3/reports/orders/totals' ) ); $report = $response->get_data(); $totals = wp_count_posts( 'shop_order' ); $data = array(); foreach ( wc_get_order_statuses() as $slug => $name ) { if ( ! isset( $totals->$slug ) ) { continue; } $data[] = array( 'slug' => str_replace( 'wc-', '', $slug ), 'name' => $name, 'total' => (int) $totals->$slug, ); } $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( count( wc_get_order_statuses() ), count( $report ) ); $this->assertEquals( $data, $report ); } /** * Tests to make sure product reviews cannot be viewed without valid permissions. * * @since 3.5.0 */ public function test_get_reports_without_permission() { wp_set_current_user( 0 ); $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v3/reports/orders/totals' ) ); $this->assertEquals( 401, $response->get_status() ); } /** * Test the product review schema. * * @since 3.5.0 */ public function test_product_review_schema() { wp_set_current_user( $this->user ); $product = WC_Helper_Product::create_simple_product(); $request = new WP_REST_Request( 'OPTIONS', '/wc/v3/reports/orders/totals' ); $response = $this->server->dispatch( $request ); $data = $response->get_data(); $properties = $data['schema']['properties']; $this->assertEquals( 3, count( $properties ) ); $this->assertArrayHasKey( 'slug', $properties ); $this->assertArrayHasKey( 'name', $properties ); $this->assertArrayHasKey( 'total', $properties ); } }