From 311b118a02f8402fb69c5b4451ac6131e11d33fa Mon Sep 17 00:00:00 2001 From: COQUARD Cyrille Date: Mon, 16 Dec 2024 23:44:14 +0100 Subject: [PATCH 1/5] Added base to refactor the uninstaller to use the annotation --- .../HasUninstallerServiceProviderTrait.php | 65 ++++++++++++++ .../uninstaller/inc/Uninstall/Uninstall.php | 8 +- .../inc/Uninstall/UninstallerRegistration.php | 11 +++ .../Uninstall/Wrapper/UninstallerProxy.php | 42 +++++++++ .../Uninstall/Wrapper/UninstallerWrapper.php | 43 ++++++++++ .../boot/autowiring/configs/parameters.php | 10 +++ .../inc/boot/autowiring/configs/providers.php | 9 ++ .../inc/boot/autowiring/inc/Activator.php | 41 +++++++++ .../autowiring/inc/AnnotationActivator.php | 13 +++ .../AnnotationActivatorServiceProvider.php | 18 ++++ .../autowiring/inc/AnnotationDeactivator.php | 12 +++ .../AnnotationDeactivatorServiceProvider.php | 18 ++++ .../inc/boot/autowiring/inc/Cache.php | 11 +++ .../autowiring/inc/DeactivateDependency.php | 8 ++ .../inc/DeactivateServiceProvider.php | 21 +++++ .../inc/boot/autowiring/inc/Deactivator.php | 40 +++++++++ .../inc/boot/autowiring/inc/Dependency.php | 8 ++ .../boot/autowiring/inc/RegularSubscriber.php | 14 +++ .../boot/autowiring/inc/ServiceProvider.php | 15 ++++ .../inc/boot/autowiring/inc/Subscriber.php | 43 ++++++++++ .../autowiring/inc/UninstallDependency.php | 8 ++ .../inc/UninstallServiceProvider.php | 19 ++++ .../inc/boot/files/configs/parameters.php | 9 ++ .../inc/boot/files/configs/providers.php | 11 +++ .../inc/boot/files/inc/ActivateDependency.php | 8 ++ .../inc/ActivateDependencyServiceProvider.php | 18 ++++ .../Fixtures/inc/boot/files/inc/Activator.php | 41 +++++++++ .../boot/files/inc/AnnotationActivator.php | 13 +++ .../AnnotationActivatorServiceProvider.php | 18 ++++ .../boot/files/inc/AnnotationDeactivator.php | 13 +++ .../AnnotationDeactivatorServiceProvider.php | 19 ++++ .../Fixtures/inc/boot/files/inc/Cache.php | 11 +++ .../boot/files/inc/DeactivateDependency.php | 8 ++ .../DeactivateDependencyServiceProvider.php | 15 ++++ .../files/inc/DeactivateServiceProvider.php | 33 +++++++ .../inc/boot/files/inc/Deactivator.php | 40 +++++++++ .../boot/files/inc/EnableServiceProvider.php | 30 +++++++ .../inc/boot/files/inc/ServiceProvider.php | 25 ++++++ .../inc/boot/files/inc/Subscriber.php | 30 +++++++ .../inc/boot/inflector/configs/parameters.php | 7 ++ .../inc/boot/inflector/configs/providers.php | 11 +++ .../boot/inflector/inc/ActivateDependency.php | 8 ++ .../inc/ActivateDependencyServiceProvider.php | 18 ++++ .../inc/boot/inflector/inc/Activator.php | 44 ++++++++++ .../inflector/inc/AnnotationActivator.php | 14 +++ .../AnnotationActivatorServiceProvider.php | 19 ++++ .../inflector/inc/AnnotationDeactivator.php | 12 +++ .../AnnotationDeactivatorServiceProvider.php | 18 ++++ .../inflector/inc/DeactivateDependency.php | 8 ++ .../DeactivateDependencyServiceProvider.php | 15 ++++ .../inc/DeactivateServiceProvider.php | 31 +++++++ .../inc/boot/inflector/inc/Deactivator.php | 42 +++++++++ .../inflector/inc/EnableServiceProvider.php | 28 ++++++ .../inflector/inc/Inflector/Inflected.php | 11 +++ .../inc/Inflector/InflectorInterface.php | 8 ++ .../boot/inflector/inc/ServiceProvider.php | 31 +++++++ .../inc/boot/inflector/inc/Subscriber.php | 27 ++++++ .../tests/Fixtures/inc/boot/uninstall.php | 28 ++++++ .../tests/Integration/TestCase.php | 86 +++++++++++++++++++ .../tests/Integration/UseContainer.php | 27 ++++++ .../tests/Integration/bootstrap.php | 27 ++++++ .../tests/Integration/inc/boot/uninstall.php | 38 ++++++++ .../tests/Integration/init-tests.php | 11 +++ .../tests/Integration/phpunit.xml.dist | 13 +++ 64 files changed, 1398 insertions(+), 3 deletions(-) create mode 100644 packages/uninstaller/inc/Uninstall/HasUninstallerServiceProviderTrait.php create mode 100644 packages/uninstaller/inc/Uninstall/UninstallerRegistration.php create mode 100644 packages/uninstaller/inc/Uninstall/Wrapper/UninstallerProxy.php create mode 100644 packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/parameters.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Activator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivatorServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivatorServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Cache.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/DeactivateDependency.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/DeactivateServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Deactivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Dependency.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/RegularSubscriber.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/ServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Subscriber.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallDependency.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/configs/parameters.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependency.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependencyServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivatorServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivatorServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Cache.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateDependency.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateDependencyServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Deactivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Subscriber.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/parameters.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/ActivateDependency.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/ActivateDependencyServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivatorServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivatorServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependencyServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Deactivator.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/EnableServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/InflectorInterface.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/ServiceProvider.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Subscriber.php create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php create mode 100644 packages/uninstaller/tests/Integration/TestCase.php create mode 100644 packages/uninstaller/tests/Integration/UseContainer.php create mode 100644 packages/uninstaller/tests/Integration/bootstrap.php create mode 100644 packages/uninstaller/tests/Integration/inc/boot/uninstall.php create mode 100644 packages/uninstaller/tests/Integration/init-tests.php create mode 100644 packages/uninstaller/tests/Integration/phpunit.xml.dist diff --git a/packages/uninstaller/inc/Uninstall/HasUninstallerServiceProviderTrait.php b/packages/uninstaller/inc/Uninstall/HasUninstallerServiceProviderTrait.php new file mode 100644 index 0000000..ab96698 --- /dev/null +++ b/packages/uninstaller/inc/Uninstall/HasUninstallerServiceProviderTrait.php @@ -0,0 +1,65 @@ +load(); + + $uninstallers = []; + + foreach ( $this->get_services_to_load() as $registration ) { + if ( ! $registration instanceof UninstallerRegistration ) { + continue; + } + + $uninstallers [] = $registration->get_id(); + } + + return $uninstallers; + } + + /** + * Register uninstaller. + * + * @param string $classname Classname from the uninstaller. + * @return UninstallerRegistration + */ + public function register_uninstaller( string $classname ): UninstallerRegistration { + $registration = new UninstallerRegistration( $classname ); + + $this->add_service_to_load( $registration ); + + return $registration; + } + + /** + * Loads definitions. + * + * @return void + */ + abstract protected function load(); + + /** + * Get the service to load. + * + * @return Registration[] + */ + abstract protected function get_services_to_load(): array; + + /** + * Add to the list of service to load. + * + * @param Registration $registration Registration from the service to add. + * @return void + */ + abstract protected function add_service_to_load( Registration $registration ): void; +} \ No newline at end of file diff --git a/packages/uninstaller/inc/Uninstall/Uninstall.php b/packages/uninstaller/inc/Uninstall/Uninstall.php index 74969dd..9aae0f9 100644 --- a/packages/uninstaller/inc/Uninstall/Uninstall.php +++ b/packages/uninstaller/inc/Uninstall/Uninstall.php @@ -2,6 +2,7 @@ namespace LaunchpadUninstaller\Uninstall; use LaunchpadCore\Container\HasInflectorInterface; +use LaunchpadUninstaller\Uninstall\Wrapper\UninstallerWrapper; use Psr\Container\ContainerInterface; class Uninstall @@ -51,6 +52,8 @@ public static function uninstall_plugin() { self::$container->addServiceProvider($provider); } + $wrapper = new UninstallerWrapper(); + foreach ( $providers as $service_provider ) { if( ! $service_provider instanceof HasInflectorInterface ) { continue; @@ -65,9 +68,8 @@ public static function uninstall_plugin() { foreach ( $provider->get_uninstallers() as $uninstaller ) { $uninstaller_instance = self::$container->get( $uninstaller ); - if(! $uninstaller_instance instanceof UninstallerInterface) { - continue; - } + $uninstaller_instance = $wrapper->wrap($uninstaller_instance); + $uninstaller_instance->uninstall(); } } diff --git a/packages/uninstaller/inc/Uninstall/UninstallerRegistration.php b/packages/uninstaller/inc/Uninstall/UninstallerRegistration.php new file mode 100644 index 0000000..b17c904 --- /dev/null +++ b/packages/uninstaller/inc/Uninstall/UninstallerRegistration.php @@ -0,0 +1,11 @@ +instance = $instance; + $this->uninstall_methods = $uninstall_methods; + } + + /** + * @inheritDoc + */ + public function uninstall() { + foreach ( $this->uninstall_methods as $method ) { + $this->instance->{$method}(); + } + } +} \ No newline at end of file diff --git a/packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php b/packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php new file mode 100644 index 0000000..7c40e53 --- /dev/null +++ b/packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php @@ -0,0 +1,43 @@ +getMethod( $method ); + $doc_comment = $method_reflection->getDocComment(); + if ( ! $doc_comment ) { + continue; + } + $pattern = '#@uninstall#'; + + preg_match_all( $pattern, $doc_comment, $matches, PREG_PATTERN_ORDER ); + if ( ! $matches ) { + continue; + } + + $uninstall_methods[] = $method; + } + + return new UninstallerProxy( $instance, $uninstall_methods ); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/parameters.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/parameters.php new file mode 100644 index 0000000..1a838bd --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/parameters.php @@ -0,0 +1,10 @@ + 'demo_', + 'translation_key' => 'demo', + 'is_mu_plugin' => false, + 'key_param' => 'key_param', + 'cache' => \LaunchpadUninstaller\Tests\Fixtures\inc\boot\autowiring\inc\Cache::class, + 'autowiring' => true +]; \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php new file mode 100644 index 0000000..b421ca1 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php @@ -0,0 +1,9 @@ +activateDependency = $activateDependency; + $this->cache = $cache; + $this->key_param = $key_param; + } + + + /** + * @inheritDoc + */ + public function activate() + { + update_option('demo_option', true); + $this->dispatcher->do_action("{$this->prefix}test"); + $this->cache->clean(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php new file mode 100644 index 0000000..44e18be --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php @@ -0,0 +1,13 @@ +register_activator(AnnotationActivator::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php new file mode 100644 index 0000000..c65cbe6 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php @@ -0,0 +1,12 @@ +register_deactivator(AnnotationDeactivator::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Cache.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Cache.php new file mode 100644 index 0000000..55ad09b --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Cache.php @@ -0,0 +1,11 @@ +register_deactivator(Deactivator::class)->autowire(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Deactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Deactivator.php new file mode 100644 index 0000000..4b392c4 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Deactivator.php @@ -0,0 +1,40 @@ +deactivateDependency = $deactivateDependency; + $this->cache = $cache; + $this->key_param = $key_param; + } + + /** + * @inheritDoc + */ + public function deactivate() + { + delete_option('demo_option'); + $this->dispatcher->do_action("{$this->prefix}test"); + $this->cache->clean(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Dependency.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Dependency.php new file mode 100644 index 0000000..7bbad3e --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Dependency.php @@ -0,0 +1,8 @@ +register_common_subscriber(Subscriber::class)->autowire(); + + $this->register_common_subscriber(RegularSubscriber::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Subscriber.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Subscriber.php new file mode 100644 index 0000000..d46f2e0 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Subscriber.php @@ -0,0 +1,43 @@ +dependency = $dependency; + $this->translation_key = $translation_key; + $this->cache = $cache; + $this->key_param = $key_param; + } + + /** + * @hook hook + */ + public function hook_callback() + { + $this->cache->clean(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallDependency.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallDependency.php new file mode 100644 index 0000000..ef31c6d --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallDependency.php @@ -0,0 +1,8 @@ +register_activator(Activator::class)->autowire(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/parameters.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/parameters.php new file mode 100644 index 0000000..40aff56 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/parameters.php @@ -0,0 +1,9 @@ + 'demo_', + 'translation_key' => 'demo', + 'key_param' => 'key_param', + 'cache' => \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\Cache::class, + 'is_mu_plugin' => false, +]; \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php new file mode 100644 index 0000000..e142c80 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php @@ -0,0 +1,11 @@ +register_service(ActivateDependency::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php new file mode 100644 index 0000000..efb5934 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php @@ -0,0 +1,41 @@ +activateDependency = $activateDependency; + $this->key = $key; + $this->cache = $cache; + } + + + /** + * @inheritDoc + */ + public function activate() + { + update_option('demo_option', true); + $this->dispatcher->do_action("{$this->prefix}test"); + $this->cache->clean(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php new file mode 100644 index 0000000..3714adf --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php @@ -0,0 +1,13 @@ +register_activator(AnnotationActivator::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivator.php new file mode 100644 index 0000000..e7eab39 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivator.php @@ -0,0 +1,13 @@ +register_deactivator(AnnotationDeactivator::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Cache.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Cache.php new file mode 100644 index 0000000..db638fc --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Cache.php @@ -0,0 +1,11 @@ +register_service(DeactivateDependency::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateServiceProvider.php new file mode 100644 index 0000000..0206c70 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateServiceProvider.php @@ -0,0 +1,33 @@ +register_service(Deactivator::class, function (Definition $definition) { + $definition->addArgument(DeactivateDependency::class); + $definition->addArgument('key_param'); + $definition->addArgument('cache'); + }); + } + + /** + * @inheritDoc + */ + public function get_deactivators(): array + { + return [ + Deactivator::class + ]; + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Deactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Deactivator.php new file mode 100644 index 0000000..599d5da --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Deactivator.php @@ -0,0 +1,40 @@ +deactivateDependency = $deactivateDependency; + $this->key = $key; + $this->cache = $cache; + } + + /** + * @inheritDoc + */ + public function deactivate() + { + delete_option('demo_option'); + $this->dispatcher->do_action("{$this->prefix}test"); + $this->cache->clean(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php new file mode 100644 index 0000000..8677da7 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php @@ -0,0 +1,30 @@ +register_service(Activator::class, function (Definition $definition) { + $definition->addArgument(ActivateDependency::class); + $definition->addArgument('key_param'); + $definition->addArgument('cache'); + }); + } + + public function get_activators(): array + { + return [ + Activator::class + ]; + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ServiceProvider.php new file mode 100644 index 0000000..edb8378 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ServiceProvider.php @@ -0,0 +1,25 @@ +register_service(Subscriber::class) + ->set_definition(function (Definition $definition) { + $definition->addArgument($definition->addArguments(['key_param', 'cache'])); + }); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Subscriber.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Subscriber.php new file mode 100644 index 0000000..796695c --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Subscriber.php @@ -0,0 +1,30 @@ +key = $key; + $this->cache = $cache; + } + + /** + * @hook hook + */ + public function hook_callback() + { + $this->cache->clean(); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/parameters.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/parameters.php new file mode 100644 index 0000000..502b4d1 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/parameters.php @@ -0,0 +1,7 @@ + 'demo_', + 'translation_key' => 'demo', + 'is_mu_plugin' => false, +]; \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php new file mode 100644 index 0000000..beb89ee --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php @@ -0,0 +1,11 @@ +register_service(ActivateDependency::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php new file mode 100644 index 0000000..0713398 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php @@ -0,0 +1,44 @@ +activateDependency = $activateDependency; + } + + + /** + * @inheritDoc + */ + public function activate() + { + update_option('demo_option', true); + $this->inflected->method(); + $this->dispatcher->do_action("{$this->prefix}test"); + } + + public function inflector_method(Inflected $inflected) + { + $this->inflected = $inflected; + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php new file mode 100644 index 0000000..50e3aa5 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php @@ -0,0 +1,14 @@ +register_activator(AnnotationActivator::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivator.php new file mode 100644 index 0000000..1a2f56b --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivator.php @@ -0,0 +1,12 @@ +register_deactivator(AnnotationDeactivator::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php new file mode 100644 index 0000000..75ccf1a --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php @@ -0,0 +1,8 @@ +register_service(DeactivateDependency::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateServiceProvider.php new file mode 100644 index 0000000..8450c85 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateServiceProvider.php @@ -0,0 +1,31 @@ +register_service(Deactivator::class, function (Definition $definition) { + $definition->addArgument(DeactivateDependency::class); + }); + } + + /** + * @inheritDoc + */ + public function get_deactivators(): array + { + return [ + Deactivator::class + ]; + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Deactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Deactivator.php new file mode 100644 index 0000000..c15ddf3 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Deactivator.php @@ -0,0 +1,42 @@ +deactivateDependency = $deactivateDependency; + } + + /** + * @inheritDoc + */ + public function deactivate() + { + delete_option('demo_option'); + $this->dispatcher->do_action("{$this->prefix}test"); + } + + public function inflector_method(Inflected $inflected) + { + $this->inflected = $inflected; + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/EnableServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/EnableServiceProvider.php new file mode 100644 index 0000000..d208b1f --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/EnableServiceProvider.php @@ -0,0 +1,28 @@ +register_service(Activator::class, function (Definition $definition) { + $definition->addArgument(ActivateDependency::class); + }); + } + + public function get_activators(): array + { + return [ + Activator::class + ]; + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php new file mode 100644 index 0000000..f9495f5 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php @@ -0,0 +1,11 @@ +register_service(Inflected::class); + $this->register_service(Subscriber::class); + $this->register_inflector(InflectorInterface::class) + ->add_method('inflector_method', [ + Inflected::class + ]); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Subscriber.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Subscriber.php new file mode 100644 index 0000000..8b8c08b --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Subscriber.php @@ -0,0 +1,27 @@ +inflected->method(); + } + + public function inflector_method(Inflected $inflected) + { + $this->inflected = $inflected; + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php b/packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php new file mode 100644 index 0000000..2b3f558 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php @@ -0,0 +1,28 @@ + [ + 'config' => [ + 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'plugin.php', + ], + 'expected' => [ + + ] + ], + 'autowiring' => [ + 'config' => [ + 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'autowiring' . DIRECTORY_SEPARATOR . 'plugin.php', + ], + 'expected' => [ + + ] + ], + 'inflector' => [ + 'config' => [ + 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'inflector' . DIRECTORY_SEPARATOR . 'plugin.php', + ], + 'expected' => [ + + ] + ] +]; \ No newline at end of file diff --git a/packages/uninstaller/tests/Integration/TestCase.php b/packages/uninstaller/tests/Integration/TestCase.php new file mode 100644 index 0000000..b7e9671 --- /dev/null +++ b/packages/uninstaller/tests/Integration/TestCase.php @@ -0,0 +1,86 @@ + $value) { + if (!empty($transient)) { + set_transient($transient, $value); + } else { + delete_transient($transient); + } + } + } + + public function set_up() + { + parent::set_up(); + + if (empty($this->config)) { + $this->loadTestDataConfig(); + } + $this->mockHooks(); + } + + public function tear_down() + { + $this->resetHooks(); + parent::tear_down(); + } + + public function configTestData() + { + if (empty($this->config)) { + $this->loadTestDataConfig(); + } + + return isset($this->config['test_data']) + ? $this->config['test_data'] + : $this->config; + } + + protected function loadTestDataConfig() + { + $obj = new ReflectionObject($this); + $filename = $obj->getFileName(); + + $this->config = $this->getTestData(dirname($filename), basename($filename, '.php')); + } + + public function getPrefix(): string + { + return $this->prefix; + } + + public function getCurrentTest(): string + { + return $this->getName(); + } +} diff --git a/packages/uninstaller/tests/Integration/UseContainer.php b/packages/uninstaller/tests/Integration/UseContainer.php new file mode 100644 index 0000000..3684b01 --- /dev/null +++ b/packages/uninstaller/tests/Integration/UseContainer.php @@ -0,0 +1,27 @@ + 'test', + 'version' => '3.16' + ]; + return apply_filters("{$parameters['prefix']}container", null); + } + + public function get_league_container(): Container + { + $parameters = [ + 'prefix' => 'test', + 'version' => '3.16' + ]; + return apply_filters("{$parameters['prefix']}container", null); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Integration/bootstrap.php b/packages/uninstaller/tests/Integration/bootstrap.php new file mode 100644 index 0000000..306a32f --- /dev/null +++ b/packages/uninstaller/tests/Integration/bootstrap.php @@ -0,0 +1,27 @@ +assertFalse(get_option('demo_option', false), "demo_option should be unregistered"); + $this->assertFalse(get_option('demo_option_2', false), "demo_option_2 should be unregistered"); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Integration/init-tests.php b/packages/uninstaller/tests/Integration/init-tests.php new file mode 100644 index 0000000..41f38ac --- /dev/null +++ b/packages/uninstaller/tests/Integration/init-tests.php @@ -0,0 +1,11 @@ + + + + + ../../inc + + + + + inc + + + \ No newline at end of file From a08bc6689a2bb578cbc2fbab5c815fa83c5da114 Mon Sep 17 00:00:00 2001 From: COQUARD Cyrille Date: Tue, 17 Dec 2024 22:40:33 +0100 Subject: [PATCH 2/5] Added passing tests for uninstaller --- .../uninstaller/inc/Uninstall/Uninstall.php | 64 +++++++++++++++++-- .../Uninstall/Wrapper/UninstallerWrapper.php | 5 +- .../inc/boot/autowiring/configs/providers.php | 3 - .../autowiring/inc/AnnotationActivator.php | 13 ---- .../AnnotationActivatorServiceProvider.php | 18 ------ .../autowiring/inc/AnnotationDeactivator.php | 12 ---- .../AnnotationDeactivatorServiceProvider.php | 18 ------ .../autowiring/inc/DeactivateDependency.php | 8 --- .../inc/DeactivateServiceProvider.php | 21 ------ .../inc/{Deactivator.php => Uninstall.php} | 13 ++-- .../inc/UninstallServiceProvider.php | 15 +++-- .../inc/{Activator.php => Uninstaller.php} | 17 +++-- .../inc/boot/files/configs/providers.php | 9 +-- .../inc/ActivateDependencyServiceProvider.php | 18 ------ .../Fixtures/inc/boot/files/inc/Activator.php | 41 ------------ .../boot/files/inc/AnnotationActivator.php | 13 ---- .../AnnotationActivatorServiceProvider.php | 18 ------ .../AnnotationDeactivatorServiceProvider.php | 19 ------ ...ctivator.php => AnnotationUninstaller.php} | 4 +- .../AnnotationUninstallerrServiceProvider.php | 21 ++++++ .../boot/files/inc/DeactivateDependency.php | 8 --- .../DeactivateDependencyServiceProvider.php | 15 ----- .../boot/files/inc/EnableServiceProvider.php | 30 --------- ...Dependency.php => UninstallDependency.php} | 2 +- .../UninstallDependencyServiceProvider.php | 16 +++++ ...vider.php => UninstallServiceProvider.php} | 11 ++-- .../inc/{Deactivator.php => Uninstaller.php} | 8 +-- .../inc/boot/inflector/configs/providers.php | 9 +-- .../inc/ActivateDependencyServiceProvider.php | 18 ------ .../inc/boot/inflector/inc/Activator.php | 44 ------------- .../inflector/inc/AnnotationActivator.php | 14 ---- .../AnnotationActivatorServiceProvider.php | 19 ------ .../AnnotationDeactivatorServiceProvider.php | 18 ------ ...ctivator.php => AnnotationUninstaller.php} | 2 +- .../AnnotationUninstallerServiceProvider.php | 20 ++++++ .../inflector/inc/DeactivateDependency.php | 8 --- .../inflector/inc/EnableServiceProvider.php | 28 -------- .../inflector/inc/Inflector/Inflected.php | 6 +- .../inc/Inflector/InflectorInterface.php | 2 +- .../boot/inflector/inc/ServiceProvider.php | 4 +- ...Dependency.php => UninstallDependency.php} | 2 +- ...=> UninstallDependencyServiceProvider.php} | 5 +- ...vider.php => UninstallServiceProvider.php} | 11 ++-- .../inc/{Deactivator.php => Uninstaller.php} | 17 ++--- .../tests/Fixtures/inc/boot/uninstall.php | 6 +- .../tests/Integration/inc/boot/uninstall.php | 24 ++++++- 46 files changed, 211 insertions(+), 486 deletions(-) delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivatorServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivatorServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/DeactivateDependency.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/DeactivateServiceProvider.php rename packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/{Deactivator.php => Uninstall.php} (62%) rename packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/{Activator.php => Uninstaller.php} (56%) delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependencyServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivatorServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivatorServiceProvider.php rename packages/uninstaller/tests/Fixtures/inc/boot/files/inc/{AnnotationDeactivator.php => AnnotationUninstaller.php} (76%) create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationUninstallerrServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateDependency.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateDependencyServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php rename packages/uninstaller/tests/Fixtures/inc/boot/files/inc/{ActivateDependency.php => UninstallDependency.php} (75%) create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallDependencyServiceProvider.php rename packages/uninstaller/tests/Fixtures/inc/boot/files/inc/{DeactivateServiceProvider.php => UninstallServiceProvider.php} (57%) rename packages/uninstaller/tests/Fixtures/inc/boot/files/inc/{Deactivator.php => Uninstaller.php} (72%) delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/ActivateDependencyServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivatorServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivatorServiceProvider.php rename packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/{AnnotationDeactivator.php => AnnotationUninstaller.php} (85%) create mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationUninstallerServiceProvider.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php delete mode 100644 packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/EnableServiceProvider.php rename packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/{ActivateDependency.php => UninstallDependency.php} (75%) rename packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/{DeactivateDependencyServiceProvider.php => UninstallDependencyServiceProvider.php} (50%) rename packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/{DeactivateServiceProvider.php => UninstallServiceProvider.php} (52%) rename packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/{Deactivator.php => Uninstaller.php} (53%) diff --git a/packages/uninstaller/inc/Uninstall/Uninstall.php b/packages/uninstaller/inc/Uninstall/Uninstall.php index 9aae0f9..3b37986 100644 --- a/packages/uninstaller/inc/Uninstall/Uninstall.php +++ b/packages/uninstaller/inc/Uninstall/Uninstall.php @@ -2,7 +2,11 @@ namespace LaunchpadUninstaller\Uninstall; use LaunchpadCore\Container\HasInflectorInterface; +use LaunchpadCore\Container\PrefixAwareInterface; +use LaunchpadCore\Dispatcher\DispatcherAwareInterface; +use LaunchpadDispatcher\Dispatcher; use LaunchpadUninstaller\Uninstall\Wrapper\UninstallerWrapper; +use League\Container\Argument\Literal\StringArgument; use Psr\Container\ContainerInterface; class Uninstall @@ -13,6 +17,13 @@ class Uninstall protected static $container; + /** + * Hook dispatcher. + * + * @var Dispatcher + */ + protected static $dispatcher; + public static function set_providers(array $providers) { self::$providers = $providers; } @@ -25,14 +36,53 @@ public static function set_container(ContainerInterface $container) { self::$container = $container; } + /** + * Set hook dispatcher. + * + * @param Dispatcher $dispatcher Hook dispatcher. + * @return void + */ + public static function set_dispatcher( Dispatcher $dispatcher ): void { + self::$dispatcher = $dispatcher; + } + public static function uninstall_plugin() { - foreach (self::$params as $key => $value) { - self::$container->add( $key, $value); - } - $providers = array_filter(self::$providers, function ($provider) { - if(is_string($provider)) { - $provider = new $provider(); - } + foreach ( self::$params as $key => $value ) { + if ( is_string( $value ) && ! class_exists( $value ) ) { + $value = new StringArgument( $value ); + } + + self::$container->addShared( $key, $value ); + } + + + self::$container->addShared( 'dispatcher', self::$dispatcher ); + + self::$container->inflector( PrefixAwareInterface::class )->invokeMethod( 'set_prefix', [ key_exists( 'prefix', self::$params ) ? self::$params['prefix'] : '' ] ); + self::$container->inflector( DispatcherAwareInterface::class )->invokeMethod( 'set_dispatcher', [ self::$container->get( 'dispatcher' ) ] ); + + $providers = array_map( + function ( $provider ) { + if ( is_string( $provider ) ) { + return new $provider(); + } + return $provider; + }, + self::$providers + ); + + foreach ( $providers as $provider ) { + self::$container->addServiceProvider( $provider ); + } + + foreach ( $providers as $service_provider ) { + if ( ! $service_provider instanceof HasInflectorInterface ) { + continue; + } + $service_provider->register_inflectors(); + } + + $providers = array_filter($providers, function ($provider) { if(! $provider instanceof UninstallServiceProviderInterface) { return false; diff --git a/packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php b/packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php index 7c40e53..fec2e59 100644 --- a/packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php +++ b/packages/uninstaller/inc/Uninstall/Wrapper/UninstallerWrapper.php @@ -30,8 +30,9 @@ public function wrap( $instance ): UninstallerInterface { } $pattern = '#@uninstall#'; - preg_match_all( $pattern, $doc_comment, $matches, PREG_PATTERN_ORDER ); - if ( ! $matches ) { + $matched = preg_match_all( $pattern, $doc_comment, $matches, PREG_PATTERN_ORDER ); + + if ( ! $matched ) { continue; } diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php index b421ca1..7ac238e 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/configs/providers.php @@ -3,7 +3,4 @@ return [ \LaunchpadUninstaller\Tests\Fixtures\inc\boot\autowiring\inc\ServiceProvider::class, \LaunchpadUninstaller\Tests\Fixtures\inc\boot\autowiring\inc\UninstallServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\autowiring\inc\DeactivateServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\AnnotationActivatorServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\AnnotationDeactivatorServiceProvider::class, ]; \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php deleted file mode 100644 index 44e18be..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationActivator.php +++ /dev/null @@ -1,13 +0,0 @@ -register_activator(AnnotationActivator::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php deleted file mode 100644 index c65cbe6..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/AnnotationDeactivator.php +++ /dev/null @@ -1,12 +0,0 @@ -register_deactivator(AnnotationDeactivator::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/DeactivateDependency.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/DeactivateDependency.php deleted file mode 100644 index e2d8237..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/DeactivateDependency.php +++ /dev/null @@ -1,8 +0,0 @@ -register_deactivator(Deactivator::class)->autowire(); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Deactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Uninstall.php similarity index 62% rename from packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Deactivator.php rename to packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Uninstall.php index 4b392c4..496e62b 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Deactivator.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Uninstall.php @@ -7,12 +7,13 @@ use LaunchpadCore\Deactivation\DeactivationInterface; use LaunchpadCore\Dispatcher\DispatcherAwareInterface; use LaunchpadCore\Dispatcher\DispatcherAwareTrait; +use LaunchpadUninstaller\Uninstall\UninstallerInterface; -class Deactivator implements DeactivationInterface, PrefixAwareInterface, DispatcherAwareInterface +class Uninstall implements UninstallerInterface, PrefixAwareInterface, DispatcherAwareInterface { use PrefixAware, DispatcherAwareTrait; - protected $deactivateDependency; + protected $uninstallDependency; /** * @var Cache @@ -21,17 +22,17 @@ class Deactivator implements DeactivationInterface, PrefixAwareInterface, Dispat protected $key_param; - public function __construct(DeactivateDependency $deactivateDependency, $cache, $key_param) + public function __construct(UninstallDependency $uninstallDependency, $cache, $key_param) { - $this->deactivateDependency = $deactivateDependency; - $this->cache = $cache; + $this->uninstallDependency = $uninstallDependency; + $this->cache = $cache; $this->key_param = $key_param; } /** * @inheritDoc */ - public function deactivate() + public function uninstall() { delete_option('demo_option'); $this->dispatcher->do_action("{$this->prefix}test"); diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallServiceProvider.php index 53cfa63..c17249d 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallServiceProvider.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/UninstallServiceProvider.php @@ -2,18 +2,23 @@ namespace LaunchpadUninstaller\Tests\Fixtures\inc\boot\autowiring\inc; -use LaunchpadCore\Activation\HasActivatorServiceProviderInterface; -use LaunchpadCore\Activation\HasActivatorServiceProviderTrait; use LaunchpadCore\Container\AbstractServiceProvider; +use LaunchpadCore\Container\Registration\Registration; +use LaunchpadCore\Deactivation\HasDeactivatorServiceProviderInterface; +use LaunchpadCore\Deactivation\HasDesactivatorServiceProviderTrait; +use LaunchpadUninstaller\Uninstall\HasUninstallerServiceProviderInterface; +use LaunchpadUninstaller\Uninstall\HasUninstallerServiceProviderTrait; +use League\Container\Definition\Definition; -class UninstallServiceProvider extends AbstractServiceProvider implements HasActivatorServiceProviderInterface +class UninstallServiceProvider extends AbstractServiceProvider implements HasUninstallerServiceProviderInterface { - use HasActivatorServiceProviderTrait; + use HasUninstallerServiceProviderTrait; /** * @inheritDoc */ protected function define() { - $this->register_activator(Activator::class)->autowire(); + $this->register_uninstaller(Uninstall::class)->autowire(); + $this->register_uninstaller(Uninstaller::class)->autowire(); } } \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Activator.php b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Uninstaller.php similarity index 56% rename from packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Activator.php rename to packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Uninstaller.php index a4bd570..034ecdc 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Activator.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/autowiring/inc/Uninstaller.php @@ -2,17 +2,16 @@ namespace LaunchpadUninstaller\Tests\Fixtures\inc\boot\autowiring\inc; -use LaunchpadCore\Activation\ActivationInterface; use LaunchpadCore\Container\PrefixAware; use LaunchpadCore\Container\PrefixAwareInterface; use LaunchpadCore\Dispatcher\DispatcherAwareInterface; use LaunchpadCore\Dispatcher\DispatcherAwareTrait; -class Activator implements ActivationInterface, PrefixAwareInterface, DispatcherAwareInterface +class Uninstaller implements PrefixAwareInterface, DispatcherAwareInterface { use PrefixAware, DispatcherAwareTrait; - protected $activateDependency; + protected $uninstallDependency; /** * @var Cache @@ -21,20 +20,20 @@ class Activator implements ActivationInterface, PrefixAwareInterface, Dispatcher protected $key_param; - public function __construct(UninstallDependency $activateDependency, $cache, $key_param) + public function __construct(UninstallDependency $uninstallDependency, $cache, $key_param) { - $this->activateDependency = $activateDependency; - $this->cache = $cache; + $this->uninstallDependency = $uninstallDependency; + $this->cache = $cache; $this->key_param = $key_param; } /** - * @inheritDoc + * @uninstall */ - public function activate() + public function method() { - update_option('demo_option', true); + delete_option('demo_option_2'); $this->dispatcher->do_action("{$this->prefix}test"); $this->cache->clean(); } diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php index e142c80..15c2650 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/configs/providers.php @@ -2,10 +2,7 @@ return [ \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\ServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\EnableServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\ActivateDependencyServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\DeactivateServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\DeactivateDependencyServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\AnnotationActivatorServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\AnnotationDeactivatorServiceProvider::class, + \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\UninstallServiceProvider::class, + \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\UninstallDependencyServiceProvider::class, + \LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc\AnnotationUninstallerrServiceProvider::class, ]; \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependencyServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependencyServiceProvider.php deleted file mode 100644 index 560d94a..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependencyServiceProvider.php +++ /dev/null @@ -1,18 +0,0 @@ -register_service(ActivateDependency::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php deleted file mode 100644 index efb5934..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Activator.php +++ /dev/null @@ -1,41 +0,0 @@ -activateDependency = $activateDependency; - $this->key = $key; - $this->cache = $cache; - } - - - /** - * @inheritDoc - */ - public function activate() - { - update_option('demo_option', true); - $this->dispatcher->do_action("{$this->prefix}test"); - $this->cache->clean(); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php deleted file mode 100644 index 3714adf..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationActivator.php +++ /dev/null @@ -1,13 +0,0 @@ -register_activator(AnnotationActivator::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivatorServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivatorServiceProvider.php deleted file mode 100644 index ad707d7..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivatorServiceProvider.php +++ /dev/null @@ -1,19 +0,0 @@ -register_deactivator(AnnotationDeactivator::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationUninstaller.php similarity index 76% rename from packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivator.php rename to packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationUninstaller.php index e7eab39..0f00072 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationDeactivator.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationUninstaller.php @@ -3,9 +3,9 @@ namespace LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc; -class AnnotationDeactivator { +class AnnotationUninstaller { /** - * @deactivate + * @uninstall */ public function update() { delete_option('demo_option_2'); diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationUninstallerrServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationUninstallerrServiceProvider.php new file mode 100644 index 0000000..f1a1469 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/AnnotationUninstallerrServiceProvider.php @@ -0,0 +1,21 @@ +register_uninstaller(AnnotationUninstaller::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateDependency.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateDependency.php deleted file mode 100644 index 3629108..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateDependency.php +++ /dev/null @@ -1,8 +0,0 @@ -register_service(DeactivateDependency::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php deleted file mode 100644 index 8677da7..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/EnableServiceProvider.php +++ /dev/null @@ -1,30 +0,0 @@ -register_service(Activator::class, function (Definition $definition) { - $definition->addArgument(ActivateDependency::class); - $definition->addArgument('key_param'); - $definition->addArgument('cache'); - }); - } - - public function get_activators(): array - { - return [ - Activator::class - ]; - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependency.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallDependency.php similarity index 75% rename from packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependency.php rename to packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallDependency.php index 2f5cd27..1a53e29 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/ActivateDependency.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallDependency.php @@ -2,7 +2,7 @@ namespace LaunchpadUninstaller\Tests\Fixtures\inc\boot\files\inc; -class ActivateDependency +class UninstallDependency { } \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallDependencyServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallDependencyServiceProvider.php new file mode 100644 index 0000000..3865f5b --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallDependencyServiceProvider.php @@ -0,0 +1,16 @@ +register_service(UninstallDependency::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallServiceProvider.php similarity index 57% rename from packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateServiceProvider.php rename to packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallServiceProvider.php index 0206c70..7add24b 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/DeactivateServiceProvider.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/UninstallServiceProvider.php @@ -4,9 +4,10 @@ use LaunchpadCore\Container\AbstractServiceProvider; use LaunchpadCore\Deactivation\HasDeactivatorServiceProviderInterface; +use LaunchpadUninstaller\Uninstall\HasUninstallerServiceProviderInterface; use League\Container\Definition\Definition; -class DeactivateServiceProvider extends AbstractServiceProvider implements HasDeactivatorServiceProviderInterface +class UninstallServiceProvider extends AbstractServiceProvider implements HasUninstallerServiceProviderInterface { /** @@ -14,8 +15,8 @@ class DeactivateServiceProvider extends AbstractServiceProvider implements HasDe */ protected function define() { - $this->register_service(Deactivator::class, function (Definition $definition) { - $definition->addArgument(DeactivateDependency::class); + $this->register_service(Uninstaller::class, function (Definition $definition) { + $definition->addArgument(UninstallDependency::class); $definition->addArgument('key_param'); $definition->addArgument('cache'); }); @@ -24,10 +25,10 @@ protected function define() /** * @inheritDoc */ - public function get_deactivators(): array + public function get_uninstallers(): array { return [ - Deactivator::class + Uninstaller::class ]; } } \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Deactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Uninstaller.php similarity index 72% rename from packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Deactivator.php rename to packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Uninstaller.php index 599d5da..7fafadb 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Deactivator.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/files/inc/Uninstaller.php @@ -4,11 +4,11 @@ use LaunchpadCore\Container\PrefixAware; use LaunchpadCore\Container\PrefixAwareInterface; -use LaunchpadCore\Deactivation\DeactivationInterface; use LaunchpadCore\Dispatcher\DispatcherAwareInterface; use LaunchpadCore\Dispatcher\DispatcherAwareTrait; +use LaunchpadUninstaller\Uninstall\UninstallerInterface; -class Deactivator implements DeactivationInterface, PrefixAwareInterface, DispatcherAwareInterface +class Uninstaller implements UninstallerInterface, PrefixAwareInterface, DispatcherAwareInterface { use PrefixAware, DispatcherAwareTrait; @@ -21,7 +21,7 @@ class Deactivator implements DeactivationInterface, PrefixAwareInterface, Dispat */ protected $cache; - public function __construct(DeactivateDependency $deactivateDependency, $key, $cache) + public function __construct(UninstallDependency $deactivateDependency, $key, $cache) { $this->deactivateDependency = $deactivateDependency; $this->key = $key; @@ -31,7 +31,7 @@ public function __construct(DeactivateDependency $deactivateDependency, $key, $c /** * @inheritDoc */ - public function deactivate() + public function uninstall() { delete_option('demo_option'); $this->dispatcher->do_action("{$this->prefix}test"); diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php index beb89ee..2af2c2e 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/configs/providers.php @@ -2,10 +2,7 @@ return [ \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\ServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\EnableServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\ActivateDependencyServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\DeactivateServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\DeactivateDependencyServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\AnnotationDeactivatorServiceProvider::class, - \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\AnnotationActivatorServiceProvider::class, + \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\UninstallServiceProvider::class, + \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\UninstallDependencyServiceProvider::class, + \LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\AnnotationUninstallerServiceProvider::class, ]; \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/ActivateDependencyServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/ActivateDependencyServiceProvider.php deleted file mode 100644 index 4dc5c55..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/ActivateDependencyServiceProvider.php +++ /dev/null @@ -1,18 +0,0 @@ -register_service(ActivateDependency::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php deleted file mode 100644 index 0713398..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Activator.php +++ /dev/null @@ -1,44 +0,0 @@ -activateDependency = $activateDependency; - } - - - /** - * @inheritDoc - */ - public function activate() - { - update_option('demo_option', true); - $this->inflected->method(); - $this->dispatcher->do_action("{$this->prefix}test"); - } - - public function inflector_method(Inflected $inflected) - { - $this->inflected = $inflected; - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php deleted file mode 100644 index 50e3aa5..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationActivator.php +++ /dev/null @@ -1,14 +0,0 @@ -register_activator(AnnotationActivator::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivatorServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivatorServiceProvider.php deleted file mode 100644 index 641c1fd..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivatorServiceProvider.php +++ /dev/null @@ -1,18 +0,0 @@ -register_deactivator(AnnotationDeactivator::class); - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationUninstaller.php similarity index 85% rename from packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivator.php rename to packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationUninstaller.php index 1a2f56b..5568a6a 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationDeactivator.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationUninstaller.php @@ -2,7 +2,7 @@ namespace LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc; -class AnnotationDeactivator { +class AnnotationUninstaller { /** * @deactivate */ diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationUninstallerServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationUninstallerServiceProvider.php new file mode 100644 index 0000000..b3f6824 --- /dev/null +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/AnnotationUninstallerServiceProvider.php @@ -0,0 +1,20 @@ +register_uninstaller(AnnotationUninstaller::class); + } +} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php deleted file mode 100644 index 75ccf1a..0000000 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateDependency.php +++ /dev/null @@ -1,8 +0,0 @@ -register_service(Activator::class, function (Definition $definition) { - $definition->addArgument(ActivateDependency::class); - }); - } - - public function get_activators(): array - { - return [ - Activator::class - ]; - } -} \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php index f9495f5..f0756dd 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Inflector/Inflected.php @@ -1,11 +1,11 @@ register_service(DeactivateDependency::class); + $this->register_service(UninstallDependency::class); } } \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateServiceProvider.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/UninstallServiceProvider.php similarity index 52% rename from packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateServiceProvider.php rename to packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/UninstallServiceProvider.php index 8450c85..fcd9c01 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/DeactivateServiceProvider.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/UninstallServiceProvider.php @@ -4,9 +4,10 @@ use LaunchpadCore\Container\AbstractServiceProvider; use LaunchpadCore\Deactivation\HasDeactivatorServiceProviderInterface; +use LaunchpadUninstaller\Uninstall\HasUninstallerServiceProviderInterface; use League\Container\Definition\Definition; -class DeactivateServiceProvider extends AbstractServiceProvider implements HasDeactivatorServiceProviderInterface +class UninstallServiceProvider extends AbstractServiceProvider implements HasUninstallerServiceProviderInterface { /** @@ -14,18 +15,18 @@ class DeactivateServiceProvider extends AbstractServiceProvider implements HasDe */ protected function define() { - $this->register_service(Deactivator::class, function (Definition $definition) { - $definition->addArgument(DeactivateDependency::class); + $this->register_service(Uninstaller::class, function (Definition $definition) { + $definition->addArgument(UninstallDependency::class); }); } /** * @inheritDoc */ - public function get_deactivators(): array + public function get_uninstallers(): array { return [ - Deactivator::class + Uninstaller::class ]; } } \ No newline at end of file diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Deactivator.php b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Uninstaller.php similarity index 53% rename from packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Deactivator.php rename to packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Uninstaller.php index c15ddf3..f7fc736 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Deactivator.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/inflector/inc/Uninstaller.php @@ -4,35 +4,36 @@ use LaunchpadCore\Container\PrefixAware; use LaunchpadCore\Container\PrefixAwareInterface; -use LaunchpadCore\Deactivation\DeactivationInterface; use LaunchpadCore\Dispatcher\DispatcherAwareInterface; use LaunchpadCore\Dispatcher\DispatcherAwareTrait; -use LaunchpadCore\Tests\Fixtures\inc\boot\inflector\inc\Inflector\Inflected; -use LaunchpadCore\Tests\Fixtures\inc\boot\inflector\inc\Inflector\InflectorInterface; +use LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\Inflector\Inflected; +use LaunchpadUninstaller\Tests\Fixtures\inc\boot\inflector\inc\Inflector\InflectorInterface; +use LaunchpadUninstaller\Uninstall\UninstallerInterface; -class Deactivator implements DeactivationInterface, PrefixAwareInterface, DispatcherAwareInterface, InflectorInterface +class Uninstaller implements UninstallerInterface, PrefixAwareInterface, DispatcherAwareInterface, InflectorInterface { use PrefixAware, DispatcherAwareTrait; - protected $deactivateDependency; + protected $uninstallDependency; /** * @var Inflected */ protected $inflected; - public function __construct(DeactivateDependency $deactivateDependency) + public function __construct(UninstallDependency $uninstallDependency) { - $this->deactivateDependency = $deactivateDependency; + $this->uninstallDependency = $uninstallDependency; } /** * @inheritDoc */ - public function deactivate() + public function uninstall() { delete_option('demo_option'); $this->dispatcher->do_action("{$this->prefix}test"); + $this->inflected->method(); } public function inflector_method(Inflected $inflected) diff --git a/packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php b/packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php index 2b3f558..1a440ff 100644 --- a/packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php +++ b/packages/uninstaller/tests/Fixtures/inc/boot/uninstall.php @@ -3,7 +3,7 @@ return [ 'regular' => [ 'config' => [ - 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR . 'plugin.php', + 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'files' . DIRECTORY_SEPARATOR, ], 'expected' => [ @@ -11,7 +11,7 @@ ], 'autowiring' => [ 'config' => [ - 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'autowiring' . DIRECTORY_SEPARATOR . 'plugin.php', + 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'autowiring' . DIRECTORY_SEPARATOR, ], 'expected' => [ @@ -19,7 +19,7 @@ ], 'inflector' => [ 'config' => [ - 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'inflector' . DIRECTORY_SEPARATOR . 'plugin.php', + 'plugin' => __DIR__ . DIRECTORY_SEPARATOR . 'inflector' . DIRECTORY_SEPARATOR, ], 'expected' => [ diff --git a/packages/uninstaller/tests/Integration/inc/boot/uninstall.php b/packages/uninstaller/tests/Integration/inc/boot/uninstall.php index 69a3341..c3a973f 100644 --- a/packages/uninstaller/tests/Integration/inc/boot/uninstall.php +++ b/packages/uninstaller/tests/Integration/inc/boot/uninstall.php @@ -2,7 +2,10 @@ namespace LaunchpadUninstaller\Tests\Integration\inc\boot; +use LaunchpadDispatcher\Dispatcher; use LaunchpadUninstaller\Tests\Integration\TestCase; +use LaunchpadUninstaller\Uninstall\Uninstall; +use League\Container\Container; use function LaunchpadCore\boot; class Test_Uninstall extends TestCase { @@ -27,10 +30,25 @@ public function tear_down() public function testShouldDoAsExpected($config, $expected) { require_once LAUNCHPAD_PLUGIN_ROOT . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'wp-launchpad' . DIRECTORY_SEPARATOR . 'core' . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'boot.php'; - boot($config['plugin']); - $activate_plugin_path = ltrim( $config['plugin'], DIRECTORY_SEPARATOR); - do_action("uninstall_{$activate_plugin_path}"); + $plugin_root_dir = $config['plugin']; + + $params = require_once $plugin_root_dir . '/configs/parameters.php'; + $providers = require_once $plugin_root_dir . '/configs/providers.php'; + + + $container = new Container(); + if( key_exists('autowiring', $params) && $params['autowiring']) { + $reflection_container = new \LaunchpadCore\Container\Autowiring\Container(); + $container->delegate( $reflection_container ); + } + + Uninstall::set_container($container); + Uninstall::set_dispatcher(new Dispatcher()); + Uninstall::set_params($params); + Uninstall::set_providers($providers); + + Uninstall::uninstall_plugin(); $this->assertFalse(get_option('demo_option', false), "demo_option should be unregistered"); $this->assertFalse(get_option('demo_option_2', false), "demo_option_2 should be unregistered"); From da4cf4b5b9ec8a065b76fae5e64bd824a002cae7 Mon Sep 17 00:00:00 2001 From: COQUARD Cyrille Date: Tue, 17 Dec 2024 22:43:00 +0100 Subject: [PATCH 3/5] Added passing tests for uninstaller --- packages/uninstaller/composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/uninstaller/composer.json b/packages/uninstaller/composer.json index fdcfeeb..e3d1385 100644 --- a/packages/uninstaller/composer.json +++ b/packages/uninstaller/composer.json @@ -27,9 +27,9 @@ "wp-media/phpunit": "^3.0" }, "scripts": { - "test-unit": "\"vendor/bin/phpunit\" --testsuite unit --colors=always --configuration tests/Unit/phpunit.xml.dist", + "test-integration": "\"vendor/bin/phpunit\" --testsuite integration --colors=always --configuration tests/Integration/phpunit.xml.dist --exclude-group AdminOnly", "run-tests": [ - "@test-unit" + "@test-integration" ] } } From 411d3de0db285e87b00c9e0b1252b65e7e81cb5a Mon Sep 17 00:00:00 2001 From: COQUARD Cyrille Date: Fri, 20 Dec 2024 17:09:29 +0100 Subject: [PATCH 4/5] Fixed tests and take off module --- .../core/tests/Integration/inc/boot/deactivate.php | 3 ++- packages/uninstaller-take-off/composer.json | 2 +- .../uninstaller-take-off/templates/uninstall.php.tpl | 10 +++++++++- .../Fixtures/inc/Commands/InstallCommand/execute.php | 8 -------- .../inc/Commands/InstallCommand/files/uninstall.php | 12 ++++++++++-- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/packages/core/tests/Integration/inc/boot/deactivate.php b/packages/core/tests/Integration/inc/boot/deactivate.php index b045c12..06fc9fc 100644 --- a/packages/core/tests/Integration/inc/boot/deactivate.php +++ b/packages/core/tests/Integration/inc/boot/deactivate.php @@ -34,5 +34,6 @@ public function testShouldDoAsExpected($config, $expected) do_action("deactivate_{$activate_plugin_path}"); $this->assertFalse(get_option('demo_option', false), "demo_option should be unregistered"); - $this->assertFalse(get_option('demo_option_2', false), "demo_option_2 should be unregistered"); } + $this->assertFalse(get_option('demo_option_2', false), "demo_option_2 should be unregistered"); + } } \ No newline at end of file diff --git a/packages/uninstaller-take-off/composer.json b/packages/uninstaller-take-off/composer.json index 14710a4..62ac367 100644 --- a/packages/uninstaller-take-off/composer.json +++ b/packages/uninstaller-take-off/composer.json @@ -36,7 +36,7 @@ "install": true, "clean": true, "libraries": { - "wp-launchpad/uninstaller": "^0.0" + "wp-launchpad/uninstaller": "^3.1" } } }, diff --git a/packages/uninstaller-take-off/templates/uninstall.php.tpl b/packages/uninstaller-take-off/templates/uninstall.php.tpl index c1ba658..78c2600 100644 --- a/packages/uninstaller-take-off/templates/uninstall.php.tpl +++ b/packages/uninstaller-take-off/templates/uninstall.php.tpl @@ -2,6 +2,7 @@ defined( 'WP_UNINSTALL_PLUGIN' ) || exit; +use {{ base_namespace }}Dependencies\LaunchpadDispatcher\Dispatcher; use {{ base_namespace }}Dependencies\LaunchpadUninstaller\Uninstall\Uninstall; use {{ base_namespace }}Dependencies\League\Container\Container; @@ -13,7 +14,14 @@ require_once $plugin_root_dir . '/vendor/autoload.php'; $params = require_once $plugin_root_dir . '/configs/parameters.php'; $providers = require_once $plugin_root_dir . '/configs/providers.php'; -Uninstall::set_container(new Container()); +$container = new Container(); +if( key_exists('autowiring', $params) && $params['autowiring']) { + $reflection_container = new \LaunchpadCore\Container\Autowiring\Container(); + $container->delegate( $reflection_container ); +} + +Uninstall::set_container($container); +Uninstall::set_dispatcher(new Dispatcher()); Uninstall::set_params($params); Uninstall::set_providers($providers); diff --git a/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/execute.php b/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/execute.php index 34b417e..b238da9 100644 --- a/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/execute.php +++ b/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/execute.php @@ -47,14 +47,6 @@ 'exists' => true, 'content' => file_get_contents(__DIR__ . '/files/configs/providers.php') ], - 'composer.json' => [ - 'exists' => true, - 'content' => file_get_contents(__DIR__ . '/files/composer.json') - ], - 'bin/generator' => [ - 'exists' => true, - 'content' => file_get_contents(__DIR__ . '/files/bin/generator') - ], 'uninstall.php' => [ 'exists' => true, 'content' => file_get_contents(__DIR__ . '/files/uninstall.php') diff --git a/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/files/uninstall.php b/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/files/uninstall.php index fb627c6..eabd680 100644 --- a/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/files/uninstall.php +++ b/packages/uninstaller-take-off/tests/Fixtures/inc/Commands/InstallCommand/files/uninstall.php @@ -2,7 +2,8 @@ defined( 'WP_UNINSTALL_PLUGIN' ) || exit; -use RocketLauncher\Dependencies\RocketLauncherUninstaller\Uninstall\Uninstall; +use RocketLauncher\Dependencies\LaunchpadDispatcher\Dispatcher; +use RocketLauncher\Dependencies\LaunchpadUninstaller\Uninstall\Uninstall; use RocketLauncher\Dependencies\League\Container\Container; $plugin_root_dir = dirname( __FILE__ ); @@ -13,7 +14,14 @@ $params = require_once $plugin_root_dir . '/configs/parameters.php'; $providers = require_once $plugin_root_dir . '/configs/providers.php'; -Uninstall::set_container(new Container()); +$container = new Container(); +if( key_exists('autowiring', $params) && $params['autowiring']) { + $reflection_container = new \LaunchpadCore\Container\Autowiring\Container(); + $container->delegate( $reflection_container ); +} + +Uninstall::set_container($container); +Uninstall::set_dispatcher(new Dispatcher()); Uninstall::set_params($params); Uninstall::set_providers($providers); From be1d0b607ae8797c52ec498679415f0c90054259 Mon Sep 17 00:00:00 2001 From: COQUARD Cyrille Date: Fri, 20 Dec 2024 17:10:10 +0100 Subject: [PATCH 5/5] Added uninstaller take off to tests --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8ae262..9f1fd48 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,6 +24,7 @@ jobs: - wp-launchpad/core - wp-launchpad/dispatcher - wp-launchpad/uninstaller + - wp-launchpad/uninstaller-take-off - wp-launchpad/updater - wp-launchpad/cli - wp-launchpad/bud-assets