prefix}wc_order_stats", "{$wpdb->prefix}wc_order_product_lookup", "{$wpdb->prefix}wc_order_tax_lookup", "{$wpdb->prefix}wc_order_coupon_lookup", "{$wpdb->prefix}wc_admin_notes", "{$wpdb->prefix}wc_admin_note_actions", "{$wpdb->prefix}wc_customer_lookup", "{$wpdb->prefix}wc_category_lookup", ); // Remove any existing tables in the environment. $query = 'DROP TABLE IF EXISTS ' . implode( ',', $tables ); $wpdb->query( $query ); // phpcs:ignore. // Try to create the tables. Install::create_tables(); $result = $wpdb->get_col( "SHOW TABLES LIKE '{$wpdb->prefix}%'" ); // Check all the tables exist. foreach ( $tables as $table ) { $this->assertContains( $table, $result ); } } /** * Test missed DB version number update. * See: https:// github.com/woocommerce/woocommerce-admin/issues/5058 */ public function test_missed_version_number_update() { $old_version = '1.6.0'; // This should get updated to later versions as we add more migrations. // Simulate an upgrade from an older version. update_option( Install::VERSION_OPTION, '1.6.0' ); Install::install(); WC_Helper_Queue::run_all_pending(); // Simulate a collision/failure in version updating. update_option( Install::VERSION_OPTION, '1.6.0' ); // The next update check should force update the skipped version number. Install::install(); $this->assertTrue( version_compare( $old_version, get_option( Install::VERSION_OPTION ), '<' ) ); // The following update check should bump the version to the current (no migrations left). Install::install(); $this->assertEquals( get_option( Install::VERSION_OPTION ), WC_ADMIN_VERSION_NUMBER ); } }