Add unit tests
This commit is contained in:
parent
914beaa234
commit
21d1172038
|
@ -133,4 +133,119 @@ class OrdersTableQueryTests extends WC_Unit_Test_Case {
|
||||||
$this->assertEquals( 1, count( $queried_orders ) );
|
$this->assertEquals( 1, count( $queried_orders ) );
|
||||||
$this->assertContains( $orders[1]->get_id(), $queried_orders );
|
$this->assertContains( $orders[1]->get_id(), $queried_orders );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testDox 'suppress_filters' arg is honored in queries.
|
||||||
|
*/
|
||||||
|
public function test_query_suppress_filters() {
|
||||||
|
$hooks = array(
|
||||||
|
'woocommerce_orders_table_query_clauses',
|
||||||
|
'woocommerce_orders_table_query_sql',
|
||||||
|
);
|
||||||
|
|
||||||
|
$filters_called = 0;
|
||||||
|
$filter_callback = function ( $arg ) use ( &$filters_called ) {
|
||||||
|
$filters_called++;
|
||||||
|
return $arg;
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach ( $hooks as $hook ) {
|
||||||
|
add_filter( $hook, $filter_callback );
|
||||||
|
}
|
||||||
|
|
||||||
|
// suppress_filters = false
|
||||||
|
foreach ( $hooks as $hook ) {
|
||||||
|
wc_get_orders( array() );
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->assertNotEquals( $filters_called, 0 );
|
||||||
|
|
||||||
|
// suppress_filters = true
|
||||||
|
$filters_called = 0;
|
||||||
|
foreach ( $hooks as $hook ) {
|
||||||
|
wc_get_orders(
|
||||||
|
array(
|
||||||
|
'suppress_filters' => true
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$this->assertEquals( $filters_called, 0 );
|
||||||
|
|
||||||
|
foreach ( $hooks as $hook ) {
|
||||||
|
remove_all_filters( $hook );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @testdox Query filters successfully allow modificatio of order queries.
|
||||||
|
*/
|
||||||
|
public function test_query_filters() {
|
||||||
|
$order1 = new \WC_Order();
|
||||||
|
$order1->save();
|
||||||
|
|
||||||
|
$order2 = new \WC_Order();
|
||||||
|
$order2->save();
|
||||||
|
|
||||||
|
$this->assertCount( 2, wc_get_orders( array() ) );
|
||||||
|
|
||||||
|
// Force a query that returns nothing.
|
||||||
|
$filter_callback = function( $clauses ) {
|
||||||
|
$clauses['where'] .= ' AND 1=0 ';
|
||||||
|
return $clauses;
|
||||||
|
};
|
||||||
|
|
||||||
|
add_filter( 'woocommerce_orders_table_query_clauses', $filter_callback );
|
||||||
|
$this->assertCount( 0, wc_get_orders( array() ) );
|
||||||
|
remove_all_filters( 'woocommerce_orders_table_query_clauses' );
|
||||||
|
|
||||||
|
// Force a query that sorts orders by id DESC (as opposed to the default date ASC) if a query arg is present.
|
||||||
|
$filter_callback = function( $clauses, $query, $query_args ) use ( $order1 ) {
|
||||||
|
if ( ! empty( $query_args['my_custom_arg'] ) ) {
|
||||||
|
$clauses['orderby'] = $query->get_table_name( 'orders' ) . '.id DESC';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $clauses;
|
||||||
|
};
|
||||||
|
|
||||||
|
add_filter( 'woocommerce_orders_table_query_clauses', $filter_callback, 10, 3 );
|
||||||
|
$this->assertEquals(
|
||||||
|
wc_get_orders(
|
||||||
|
array(
|
||||||
|
'return' => 'ids',
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
$order1->get_id(),
|
||||||
|
$order2->get_id(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
wc_get_orders(
|
||||||
|
array(
|
||||||
|
'return' => 'ids',
|
||||||
|
'my_custom_arg' => true,
|
||||||
|
)
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
$order2->get_id(),
|
||||||
|
$order1->get_id(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
remove_all_filters( 'woocommerce_orders_table_query_clauses' );
|
||||||
|
}
|
||||||
|
|
||||||
|
// $logged_messages = array();
|
||||||
|
|
||||||
|
// $log_watcher = function ( string $logged_message ) use ( &$logged_messages ) {
|
||||||
|
// $logged_messages[] = $logged_message;
|
||||||
|
// };
|
||||||
|
|
||||||
|
// add_filter( 'woocommerce_logger_log_message', $log_watcher );
|
||||||
|
|
||||||
|
// suppress_filters.
|
||||||
|
// $this->database_service = $this->getMockBuilder( 'WC_Integration_maxMind_Database_Service' )
|
||||||
|
// ->disableOriginalConstructor()
|
||||||
|
// ->getMock();
|
||||||
|
// add_filter( 'woocommerce_maxmind_geolocation_database_service', array( $this, 'override_integration_service' ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue