woocommerce/plugins/woocommerce-blocks/tests/php/Migration.php

120 lines
2.9 KiB
PHP
Raw Normal View History

Add migration strategy and load blockified templates (https://github.com/woocommerce/woocommerce-blocks/pull/6538) * Increase `schema_version` to add the new `wc_blocks_use_blockified_templates` flag If the schema version stored on the db is <= 260 means the plugin is being updated to the new version and we should keep using the old templates, not the blockified ones. * After the theme is switched we check if we need to update the flag to start loading the blockified templates or not. * Get the templates from the blockified folder if the flag is set to true on the db * Add temporary blockified template for testing purposes * Inline variable * Improve comment * Use blockified templates on new installs with block themes only * Don't use blockified templates when switching to a non FSE theme * Fix condition * Add tests for the option value * Move the check to use blockified templates * WIP * WIP * Add migration strategy * Move the blockified templates to the templates folder and filter them depending on the option * Fix tests and start using the Options constants * Fix migration, the `should_use_blockified_product_grid_templates` and tests * Rename tests and move to Utils folder * add Migration class test * try * remove PHP * add composer * Replace the blockified templates with a temporary version * Fix tests * add comment * Add feature gating for experimental builds * Inject the package to the controller * test * Change blocks.ini * debug * Remove debug info * fix test * fix tests * try now * using composer cache * install deps * test * Remove unnecessary extra key * Add cache actions * Undo tests change * Fix readme format Co-authored-by: Luigi <gigitux@gmail.com>
2022-07-06 07:51:39 +00:00
<?php
namespace Automattic\WooCommerce\Blocks\Tests\Utils;
use Automattic\WooCommerce\Blocks\Migration;
use Automattic\WooCommerce\Blocks\Options;
class MigrationTest extends \WP_UnitTestCase {
public function setUp() {
parent::setUp();
delete_option( Options::WC_BLOCK_USE_BLOCKIFIED_PRODUCT_GRID_BLOCK_AS_TEMPLATE );
delete_option( Options::WC_BLOCK_VERSION );
}
public function test_migrations_run() {
update_option( Options::WC_BLOCK_VERSION, '1.0.0' );
$mock = $this->createPartialMock( Migration::class, array( 'execute_migration_2_0_0', 'execute_second_migration_2_0_0' ) );
$reflection = new \ReflectionClass( Migration::class );
$property = $reflection->getProperty( 'db_upgrades' );
$property->setAccessible( true );
$property->setValue(
$mock,
array(
'2.0.0' => array(
'execute_migration_2_0_0',
'execute_second_migration_2_0_0',
),
)
);
$mock->expects( $this->once() )
->method( 'execute_migration_2_0_0' );
$mock->expects( $this->once() )
->method( 'execute_second_migration_2_0_0' );
$mock->run_migrations();
}
public function test_multiple_migrations_run() {
update_option( Options::WC_BLOCK_VERSION, '0.0.9' );
$mock = $this->createPartialMock( Migration::class, array( 'execute_migration_1_0_0', 'execute_migration_2_0_0' ) );
$reflection = new \ReflectionClass( Migration::class );
$property = $reflection->getProperty( 'db_upgrades' );
$property->setAccessible( true );
$property->setValue(
$mock,
array(
'1.0.0' => array(
'execute_migration_1_0_0',
),
'2.0.0' => array(
'execute_migration_2_0_0',
),
)
);
$mock->expects( $this->once() )
->method( 'execute_migration_1_0_0' );
$mock->expects( $this->once() )
->method( 'execute_migration_2_0_0' );
$mock->run_migrations();
}
public function test_skip_migrations() {
update_option( Options::WC_BLOCK_VERSION, '2.0.0' );
$mock = $this->createPartialMock( Migration::class, array( 'execute_migration_2_0_0' ) );
$reflection = new \ReflectionClass( Migration::class );
$property = $reflection->getProperty( 'db_upgrades' );
$property->setAccessible( true );
$property->setValue(
$mock,
array(
'2.0.0' => array(
'execute_migration_2_0_0',
),
)
);
$mock->expects( $this->exactly( 0 ) )
->method( 'execute_migration_2_0_0' );
$mock->run_migrations();
}
public function test_skip_migrations_when_missing_version_option() {
$mock = $this->createPartialMock( Migration::class, array( 'execute_migration_2_0_0' ) );
$reflection = new \ReflectionClass( Migration::class );
$property = $reflection->getProperty( 'db_upgrades' );
$property->setAccessible( true );
$property->setValue(
$mock,
array(
'2.0.0' => array(
'execute_migration_2_0_0',
),
)
);
$mock->expects( $this->exactly( 0 ) )
->method( 'execute_migration_2_0_0' );
$mock->run_migrations();
}
}