From ae0a86bf6c6e8e0776cbb8bd1962cc18ec64c0a8 Mon Sep 17 00:00:00 2001 From: Robert Boes Date: Thu, 12 Apr 2018 10:02:52 +0200 Subject: [PATCH 1/3] Make widget classes with the Illuminate Container Also changed the TestApplicationWrapper to use the Illuminate Container when the abstract class is a subclass of AbstractWidget --- src/Factories/AbstractWidgetFactory.php | 2 +- tests/Support/TestApplicationWrapper.php | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Factories/AbstractWidgetFactory.php b/src/Factories/AbstractWidgetFactory.php index cae7922..adb52ca 100644 --- a/src/Factories/AbstractWidgetFactory.php +++ b/src/Factories/AbstractWidgetFactory.php @@ -133,7 +133,7 @@ protected function instantiateWidget(array $params = []) throw new InvalidWidgetClassException('Class "'.$widgetClass.'" must extend "Arrilot\Widgets\AbstractWidget" class'); } - $this->widget = new $widgetClass($this->widgetConfig); + $this->widget = $this->app->make( $widgetClass, [ 'config' => $this->widgetConfig ] ); if (static::$allowOnlyWidgetsWithDisabledEncryption && $this->widget->encryptParams) { throw new EncryptException('Widget "'.$widgetClass.'" was not called properly'); diff --git a/tests/Support/TestApplicationWrapper.php b/tests/Support/TestApplicationWrapper.php index 747f058..bd9c4c8 100644 --- a/tests/Support/TestApplicationWrapper.php +++ b/tests/Support/TestApplicationWrapper.php @@ -2,6 +2,7 @@ namespace Arrilot\Widgets\Test\Support; +use Arrilot\Widgets\AbstractWidget; use Arrilot\Widgets\Contracts\ApplicationWrapperContract; use Arrilot\Widgets\Factories\AsyncWidgetFactory; use Arrilot\Widgets\Factories\WidgetFactory; @@ -97,6 +98,11 @@ public function make($abstract, array $parameters = []) return new TestEncrypter(); } + if (is_subclass_of($abstract, AbstractWidget::class)) { + $app = \Illuminate\Container\Container::getInstance(); + return $app->make($abstract, $parameters); + } + throw new InvalidArgumentException("Binding {$abstract} cannot be resolved while testing"); } } From 54a91f74d3383b8d350437000f6a32d0df08fada Mon Sep 17 00:00:00 2001 From: Robert Boes Date: Thu, 12 Apr 2018 10:14:34 +0200 Subject: [PATCH 2/3] StyleCI changes --- src/Factories/AbstractWidgetFactory.php | 2 +- tests/Support/TestApplicationWrapper.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Factories/AbstractWidgetFactory.php b/src/Factories/AbstractWidgetFactory.php index adb52ca..f450e9a 100644 --- a/src/Factories/AbstractWidgetFactory.php +++ b/src/Factories/AbstractWidgetFactory.php @@ -133,7 +133,7 @@ protected function instantiateWidget(array $params = []) throw new InvalidWidgetClassException('Class "'.$widgetClass.'" must extend "Arrilot\Widgets\AbstractWidget" class'); } - $this->widget = $this->app->make( $widgetClass, [ 'config' => $this->widgetConfig ] ); + $this->widget = $this->app->make($widgetClass, ['config' => $this->widgetConfig]); if (static::$allowOnlyWidgetsWithDisabledEncryption && $this->widget->encryptParams) { throw new EncryptException('Widget "'.$widgetClass.'" was not called properly'); diff --git a/tests/Support/TestApplicationWrapper.php b/tests/Support/TestApplicationWrapper.php index bd9c4c8..cb885e9 100644 --- a/tests/Support/TestApplicationWrapper.php +++ b/tests/Support/TestApplicationWrapper.php @@ -100,6 +100,7 @@ public function make($abstract, array $parameters = []) if (is_subclass_of($abstract, AbstractWidget::class)) { $app = \Illuminate\Container\Container::getInstance(); + return $app->make($abstract, $parameters); } From b6ca8ae47ccd8fa53e8824c2504102746971d090 Mon Sep 17 00:00:00 2001 From: Robert Boes Date: Thu, 12 Apr 2018 11:02:57 +0200 Subject: [PATCH 3/3] Use makeWith instead of make --- tests/Support/TestApplicationWrapper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Support/TestApplicationWrapper.php b/tests/Support/TestApplicationWrapper.php index cb885e9..1b31437 100644 --- a/tests/Support/TestApplicationWrapper.php +++ b/tests/Support/TestApplicationWrapper.php @@ -101,7 +101,7 @@ public function make($abstract, array $parameters = []) if (is_subclass_of($abstract, AbstractWidget::class)) { $app = \Illuminate\Container\Container::getInstance(); - return $app->make($abstract, $parameters); + return $app->makeWith($abstract, $parameters); } throw new InvalidArgumentException("Binding {$abstract} cannot be resolved while testing");