Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Testwork / EventDispatcher / Tester / EventDispatchingExercise.php
1 <?php
2
3 /*
4  * This file is part of the Behat Testwork.
5  * (c) Konstantin Kudryashov <ever.zet@gmail.com>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 namespace Behat\Testwork\EventDispatcher\Tester;
12
13 use Behat\Testwork\EventDispatcher\Event\AfterExerciseCompleted;
14 use Behat\Testwork\EventDispatcher\Event\AfterExerciseSetup;
15 use Behat\Testwork\EventDispatcher\Event\BeforeExerciseCompleted;
16 use Behat\Testwork\EventDispatcher\Event\BeforeExerciseTeardown;
17 use Behat\Testwork\Tester\Exercise;
18 use Behat\Testwork\Tester\Result\TestResult;
19 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
20
21 /**
22  * Exercise dispatching BEFORE/AFTER events during its execution.
23  *
24  * @author Konstantin Kudryashov <ever.zet@gmail.com>
25  */
26 final class EventDispatchingExercise implements Exercise
27 {
28     /**
29      * @var Exercise
30      */
31     private $baseExercise;
32     /**
33      * @var EventDispatcherInterface
34      */
35     private $eventDispatcher;
36
37     /**
38      * Initializes exercise.
39      *
40      * @param Exercise                 $baseExercise
41      * @param EventDispatcherInterface $eventDispatcher
42      */
43     public function __construct(Exercise $baseExercise, EventDispatcherInterface $eventDispatcher)
44     {
45         $this->baseExercise = $baseExercise;
46         $this->eventDispatcher = $eventDispatcher;
47     }
48
49     /**
50      * {@inheritdoc}
51      */
52     public function setUp(array $iterators, $skip)
53     {
54         $event = new BeforeExerciseCompleted($iterators);
55         $this->eventDispatcher->dispatch($event::BEFORE, $event);
56
57         $setup = $this->baseExercise->setUp($iterators, $skip);
58
59         $event = new AfterExerciseSetup($iterators, $setup);
60         $this->eventDispatcher->dispatch($event::AFTER_SETUP, $event);
61
62         return $setup;
63     }
64
65     /**
66      * {@inheritdoc}
67      */
68     public function test(array $iterators, $skip = false)
69     {
70         return $this->baseExercise->test($iterators, $skip);
71     }
72
73     /**
74      * {@inheritdoc}
75      */
76     public function tearDown(array $iterators, $skip, TestResult $result)
77     {
78         $event = new BeforeExerciseTeardown($iterators, $result);
79         $this->eventDispatcher->dispatch($event::BEFORE_TEARDOWN, $event);
80
81         $teardown = $this->baseExercise->tearDown($iterators, $skip, $result);
82
83         $event = new AfterExerciseCompleted($iterators, $result, $teardown);
84         $this->eventDispatcher->dispatch($event::AFTER, $event);
85
86         return $teardown;
87     }
88 }