diff --git a/src/Command/WorkflowTryCommand.php b/src/Command/WorkflowTryCommand.php index c3a0c126..34c573ec 100644 --- a/src/Command/WorkflowTryCommand.php +++ b/src/Command/WorkflowTryCommand.php @@ -15,6 +15,7 @@ use Tienvx\Bundle\MbtBundle\Generator\GeneratorManager; use Tienvx\Bundle\MbtBundle\Helper\Steps\Recorder as StepsRecorder; use Tienvx\Bundle\MbtBundle\Helper\WorkflowHelper; +use Tienvx\Bundle\MbtBundle\Model\Subject\TearDownInterface; use Tienvx\Bundle\MbtBundle\Model\SubjectInterface; use Tienvx\Bundle\MbtBundle\Steps\Steps; use Tienvx\Bundle\MbtBundle\Subject\SubjectManager; @@ -97,7 +98,9 @@ protected function try(GeneratorInterface $generator, GeneratorOptions $generato "{$throwable->getMessage()}", ]); } finally { - $subject->tearDown(); + if ($subject instanceof TearDownInterface) { + $subject->tearDown(); + } } $this->renderTable($output, $recorded); diff --git a/src/Event/SubjectInitEvent.php b/src/Event/SubjectInitEvent.php deleted file mode 100644 index f06f30df..00000000 --- a/src/Event/SubjectInitEvent.php +++ /dev/null @@ -1,37 +0,0 @@ -subject = $subject; - $this->trying = $trying; - } - - public function getSubject(): SubjectInterface - { - return $this->subject; - } - - public function isTrying(): bool - { - return $this->trying; - } -} diff --git a/src/EventListener/SubjectSubscriber.php b/src/EventListener/SubjectSubscriber.php deleted file mode 100644 index 297632aa..00000000 --- a/src/EventListener/SubjectSubscriber.php +++ /dev/null @@ -1,24 +0,0 @@ -getSubject() instanceof SetUpInterface) { - $event->getSubject()->setUp($event->isTrying()); - } - } - - public static function getSubscribedEvents() - { - return [ - SubjectInitEvent::class => 'onInit', - ]; - } -} diff --git a/src/MessageHandler/ExecuteTaskMessageHandler.php b/src/MessageHandler/ExecuteTaskMessageHandler.php index 3993c0cc..a66eddf6 100644 --- a/src/MessageHandler/ExecuteTaskMessageHandler.php +++ b/src/MessageHandler/ExecuteTaskMessageHandler.php @@ -14,6 +14,7 @@ use Tienvx\Bundle\MbtBundle\Helper\WorkflowHelper; use Tienvx\Bundle\MbtBundle\Message\ApplyTaskTransitionMessage; use Tienvx\Bundle\MbtBundle\Message\ExecuteTaskMessage; +use Tienvx\Bundle\MbtBundle\Model\Subject\TearDownInterface; use Tienvx\Bundle\MbtBundle\Steps\Steps; use Tienvx\Bundle\MbtBundle\Subject\SubjectManager; use Tienvx\Bundle\MbtBundle\Workflow\TaskWorkflow; @@ -98,7 +99,9 @@ protected function execute(Task $task): void } catch (Throwable $throwable) { $this->messageHelper->createBug($recorded, $throwable->getMessage(), $task->getId(), $task->getWorkflow()->getName()); } finally { - $subject->tearDown(); + if ($subject instanceof TearDownInterface) { + $subject->tearDown(); + } $this->messageBus->dispatch(new ApplyTaskTransitionMessage($task->getId(), TaskWorkflow::COMPLETE)); } diff --git a/src/MessageHandler/TestBugMessageHandler.php b/src/MessageHandler/TestBugMessageHandler.php index e0e9ff32..2b0d1f69 100644 --- a/src/MessageHandler/TestBugMessageHandler.php +++ b/src/MessageHandler/TestBugMessageHandler.php @@ -15,6 +15,7 @@ use Tienvx\Bundle\MbtBundle\Helper\WorkflowHelper; use Tienvx\Bundle\MbtBundle\Message\ApplyBugTransitionMessage; use Tienvx\Bundle\MbtBundle\Message\TestBugMessage; +use Tienvx\Bundle\MbtBundle\Model\Subject\TearDownInterface; use Tienvx\Bundle\MbtBundle\Steps\Steps; use Tienvx\Bundle\MbtBundle\Subject\SubjectManager; use Tienvx\Bundle\MbtBundle\Workflow\BugWorkflow; @@ -88,7 +89,9 @@ public function __invoke(TestBugMessage $message): void } catch (Throwable $throwable) { $this->handleThrowable($throwable, $bug, $recorded); } finally { - $subject->tearDown(); + if ($subject instanceof TearDownInterface) { + $subject->tearDown(); + } } } diff --git a/src/MessageHandler/TestPredefinedCaseMessageHandler.php b/src/MessageHandler/TestPredefinedCaseMessageHandler.php index 9d33b93c..898d47a0 100644 --- a/src/MessageHandler/TestPredefinedCaseMessageHandler.php +++ b/src/MessageHandler/TestPredefinedCaseMessageHandler.php @@ -10,6 +10,7 @@ use Tienvx\Bundle\MbtBundle\Helper\Steps\Recorder as StepsRecorder; use Tienvx\Bundle\MbtBundle\Helper\WorkflowHelper; use Tienvx\Bundle\MbtBundle\Message\TestPredefinedCaseMessage; +use Tienvx\Bundle\MbtBundle\Model\Subject\TearDownInterface; use Tienvx\Bundle\MbtBundle\Model\SubjectInterface; use Tienvx\Bundle\MbtBundle\PredefinedCase\PredefinedCaseManager; use Tienvx\Bundle\MbtBundle\Steps\Steps; @@ -80,7 +81,9 @@ protected function test(PredefinedCase $predefinedCase, SubjectInterface $subjec } catch (Throwable $throwable) { $this->messageHelper->createBug($recorded, $throwable->getMessage(), null, $workflowName); } finally { - $subject->tearDown(); + if ($subject instanceof TearDownInterface) { + $subject->tearDown(); + } } } } diff --git a/src/Subject/SubjectManager.php b/src/Subject/SubjectManager.php index a4ba08e5..1c05f8ad 100644 --- a/src/Subject/SubjectManager.php +++ b/src/Subject/SubjectManager.php @@ -3,8 +3,7 @@ namespace Tienvx\Bundle\MbtBundle\Subject; use Exception; -use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; -use Tienvx\Bundle\MbtBundle\Event\SubjectInitEvent; +use Tienvx\Bundle\MbtBundle\Model\Subject\SetUpInterface; use Tienvx\Bundle\MbtBundle\Model\SubjectInterface; class SubjectManager @@ -14,15 +13,9 @@ class SubjectManager */ protected $subjects; - /** - * @var EventDispatcherInterface - */ - protected $dispatcher; - - public function __construct(array $subjects, EventDispatcherInterface $dispatcher) + public function __construct(array $subjects) { $this->subjects = $subjects; - $this->dispatcher = $dispatcher; } public function create(string $workflowName, bool $trying = false): SubjectInterface @@ -33,8 +26,9 @@ public function create(string $workflowName, bool $trying = false): SubjectInter } $subject = new $class(); - $event = new SubjectInitEvent($subject, $trying); - $this->dispatcher->dispatch($event, SubjectInitEvent::NAME); + if ($subject instanceof SetUpInterface) { + $subject->setUp($trying); + } return $subject; }