HPOS: Remove buggy check in the data cleanup tool. (#43727)
* Add refund order to unit test. * Remove buggy defensive check since existance of order is already verified. * Changelog. * PHPCS fixes. * Added more assertions after cleanup to verify cleanup worked.
This commit is contained in:
parent
8878f00707
commit
90b3e11dba
|
@ -0,0 +1,4 @@
|
|||
Significance: patch
|
||||
Type: fix
|
||||
|
||||
HPOS: Remove buggy check in the data cleanup tool.
|
|
@ -173,13 +173,11 @@ class LegacyDataHandler {
|
|||
/**
|
||||
* Checks whether an HPOS-backed order is newer than the corresponding post.
|
||||
*
|
||||
* @param int|\WC_Order $order An HPOS order.
|
||||
* @param \WC_Abstract_Order $order An HPOS order.
|
||||
* @return bool TRUE if the order is up to date with the corresponding post.
|
||||
* @throws \Exception When the order is not an HPOS order.
|
||||
*/
|
||||
private function is_order_newer_than_post( $order ): bool {
|
||||
$order = is_a( $order, 'WC_Order' ) ? $order : wc_get_order( absint( $order ) );
|
||||
|
||||
private function is_order_newer_than_post( \WC_Abstract_Order $order ): bool {
|
||||
if ( ! is_a( $order->get_data_store()->get_current_class_name(), OrdersTableDataStore::class, true ) ) {
|
||||
throw new \Exception( __( 'Order is not an HPOS order.', 'woocommerce' ) );
|
||||
}
|
||||
|
|
|
@ -42,10 +42,16 @@ class LegacyDataHandlerTests extends WC_Unit_Test_Case {
|
|||
*/
|
||||
public function test_post_data_cleanup() {
|
||||
$this->enable_cot_sync();
|
||||
$orders = array(
|
||||
$orders = array(
|
||||
OrderHelper::create_order(),
|
||||
OrderHelper::create_order(),
|
||||
);
|
||||
$refund_order = wc_create_refund(
|
||||
array(
|
||||
'order_id' => $orders[0]->get_id(),
|
||||
'amount' => 10,
|
||||
)
|
||||
);
|
||||
$this->disable_cot_sync();
|
||||
|
||||
// Confirm orders have been synced up (i.e. are not placeholders) and contain metadata.
|
||||
|
@ -53,10 +59,11 @@ class LegacyDataHandlerTests extends WC_Unit_Test_Case {
|
|||
$this->assertEquals( 'shop_order', get_post_type( $order->get_id() ) );
|
||||
$this->assertNotEmpty( get_post_meta( $order->get_id() ) );
|
||||
}
|
||||
$this->assertEquals( 'shop_order_refund', get_post_type( $refund_order->get_id() ) );
|
||||
|
||||
// Check that counts are working ok.
|
||||
$this->assertEquals( 1, $this->sut->count_orders_for_cleanup( array( $orders[0]->get_id() ) ) );
|
||||
$this->assertEquals( 2, $this->sut->count_orders_for_cleanup() );
|
||||
$this->assertEquals( 3, $this->sut->count_orders_for_cleanup() );
|
||||
|
||||
// Cleanup one of the orders.
|
||||
$this->sut->cleanup_post_data( $orders[0]->get_id() );
|
||||
|
@ -67,10 +74,15 @@ class LegacyDataHandlerTests extends WC_Unit_Test_Case {
|
|||
|
||||
// Check counts.
|
||||
$this->assertEquals( 0, $this->sut->count_orders_for_cleanup( array( $orders[0]->get_id() ) ) );
|
||||
$this->assertEquals( 1, $this->sut->count_orders_for_cleanup() );
|
||||
$this->assertEquals( 2, $this->sut->count_orders_for_cleanup() );
|
||||
|
||||
// Confirm that we now have 1 unsynced order (due to the removal of the backup data).
|
||||
$this->assertEquals( 1, wc_get_container()->get( DataSynchronizer::class )->get_current_orders_pending_sync_count() );
|
||||
|
||||
// Cleanup the refund order.
|
||||
$this->sut->cleanup_post_data( $refund_order->get_id() );
|
||||
$this->assertEquals( 1, $this->sut->count_orders_for_cleanup() );
|
||||
$this->assertEquals( 2, wc_get_container()->get( DataSynchronizer::class )->get_current_orders_pending_sync_count() );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue