diff --git a/src/Factories/AbstractWidgetFactory.php b/src/Factories/AbstractWidgetFactory.php index cae7922..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 = 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..1b31437 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,12 @@ public function make($abstract, array $parameters = []) return new TestEncrypter(); } + if (is_subclass_of($abstract, AbstractWidget::class)) { + $app = \Illuminate\Container\Container::getInstance(); + + return $app->makeWith($abstract, $parameters); + } + throw new InvalidArgumentException("Binding {$abstract} cannot be resolved while testing"); } }