Refactor migrator to be a DI service
[MAILPOET-4061]
This commit is contained in:
committed by
Veljko V
parent
ed28dcc6e6
commit
82a6fb8ac7
@@ -147,7 +147,7 @@ which will create a `storybook-static` folder with all necessary files. Don't fo
|
||||
|
||||
### DI
|
||||
|
||||
We use Symfony/dependency-injection container. Container configuration can be found in `libs/DI/ContainerFactory.php`
|
||||
We use Symfony/dependency-injection container. Container configuration can be found in `lib/DI/ContainerFactory.php`
|
||||
The container is configured and used with minimum sub-dependencies to keep final package size small.
|
||||
You can check [the docs](https://symfony.com/doc/3.4/components/dependency_injection.html) to learn more about Symfony Container.
|
||||
|
||||
|
@@ -19,14 +19,19 @@ class Activator {
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
/** @var Migrator */
|
||||
private $migrator;
|
||||
|
||||
public function __construct(
|
||||
SettingsController $settings,
|
||||
Populator $populator,
|
||||
WPFunctions $wp
|
||||
WPFunctions $wp,
|
||||
Migrator $migrator
|
||||
) {
|
||||
$this->settings = $settings;
|
||||
$this->populator = $populator;
|
||||
$this->wp = $wp;
|
||||
$this->migrator = $migrator;
|
||||
}
|
||||
|
||||
public function activate() {
|
||||
@@ -44,8 +49,7 @@ class Activator {
|
||||
}
|
||||
|
||||
private function processActivate(): void {
|
||||
$migrator = new Migrator();
|
||||
$migrator->up();
|
||||
$this->migrator->up();
|
||||
|
||||
$this->populator->up();
|
||||
$this->updateDbVersion();
|
||||
@@ -55,8 +59,7 @@ class Activator {
|
||||
}
|
||||
|
||||
public function deactivate() {
|
||||
$migrator = new Migrator();
|
||||
$migrator->down();
|
||||
$this->migrator->down();
|
||||
|
||||
$caps = new Capabilities();
|
||||
$caps->removeWPCapabilities();
|
||||
|
@@ -24,10 +24,14 @@ class Migrator {
|
||||
public $prefix;
|
||||
private $charsetCollate;
|
||||
private $models;
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
public function __construct() {
|
||||
$this->settings = SettingsController::getInstance();
|
||||
public function __construct(
|
||||
SettingsController $settings
|
||||
) {
|
||||
$this->settings = $settings;
|
||||
$this->prefix = Env::$dbPrefix;
|
||||
$this->charsetCollate = Env::$dbCharsetCollate;
|
||||
$this->models = [
|
||||
|
@@ -111,6 +111,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\Config\Initializer::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Config\Localizer::class);
|
||||
$container->autowire(\MailPoet\Config\Menu::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Config\Migrator::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Config\MP2Migrator::class);
|
||||
$container->autowire(\MailPoet\Config\RendererFactory::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Config\ServicesChecker::class)->setPublic(true);
|
||||
|
@@ -7,6 +7,7 @@ use Helper\WordPressHooks as WPHooksHelper;
|
||||
use MailPoet\API\JSON\Response as APIResponse;
|
||||
use MailPoet\API\JSON\v1\Setup;
|
||||
use MailPoet\Config\Activator;
|
||||
use MailPoet\Config\Migrator;
|
||||
use MailPoet\Config\Populator;
|
||||
use MailPoet\Form\FormsRepository;
|
||||
use MailPoet\Referrals\ReferralDetector;
|
||||
@@ -40,7 +41,8 @@ class SetupTest extends \MailPoetTest {
|
||||
$this->entityManager,
|
||||
$this->diContainer->get(WP::class)
|
||||
);
|
||||
$router = new Setup($wpStub, new Activator($settings, $populator, $wpStub));
|
||||
$migrator = $this->diContainer->get(Migrator::class);
|
||||
$router = new Setup($wpStub, new Activator($settings, $populator, $wpStub, $migrator));
|
||||
$response = $router->reset();
|
||||
expect($response->status)->equals(APIResponse::STATUS_OK);
|
||||
|
||||
|
@@ -16,7 +16,7 @@ class MigratorTest extends \MailPoetTest {
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->migrator = new Migrator();
|
||||
$this->migrator = $this->diContainer->get(Migrator::class);
|
||||
$this->settings = $this->diContainer->get(SettingsController::class);
|
||||
$this->truncateEntity(DynamicSegmentFilterEntity::class);
|
||||
}
|
||||
|
Reference in New Issue
Block a user