Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Testwork / EventDispatcher / Tester / EventDispatchingSuiteTester.php
1 <?php
2
3 /*
4  * This file is part of the Behat.
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\Environment\Environment;
14 use Behat\Testwork\EventDispatcher\Event\AfterSuiteSetup;
15 use Behat\Testwork\EventDispatcher\Event\AfterSuiteTested;
16 use Behat\Testwork\EventDispatcher\Event\BeforeSuiteTeardown;
17 use Behat\Testwork\EventDispatcher\Event\BeforeSuiteTested;
18 use Behat\Testwork\Specification\SpecificationIterator;
19 use Behat\Testwork\Tester\Result\TestResult;
20 use Behat\Testwork\Tester\SuiteTester;
21 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
22
23 /**
24  * Suite tester dispatching BEFORE/AFTER events during testing.
25  *
26  * @author Konstantin Kudryashov <ever.zet@gmail.com>
27  */
28 final class EventDispatchingSuiteTester implements SuiteTester
29 {
30     /**
31      * @var SuiteTester
32      */
33     private $baseTester;
34     /**
35      * @var EventDispatcherInterface
36      */
37     private $eventDispatcher;
38
39     /**
40      * Initializes tester.
41      *
42      * @param SuiteTester              $baseTester
43      * @param EventDispatcherInterface $eventDispatcher
44      */
45     public function __construct(SuiteTester $baseTester, EventDispatcherInterface $eventDispatcher)
46     {
47         $this->baseTester = $baseTester;
48         $this->eventDispatcher = $eventDispatcher;
49     }
50
51     /**
52      * {@inheritdoc}
53      */
54     public function setUp(Environment $env, SpecificationIterator $iterator, $skip)
55     {
56         $event = new BeforeSuiteTested($env, $iterator);
57         $this->eventDispatcher->dispatch($event::BEFORE, $event);
58
59         $setup = $this->baseTester->setUp($env, $iterator, $skip);
60
61         $event = new AfterSuiteSetup($env, $iterator, $setup);
62         $this->eventDispatcher->dispatch($event::AFTER_SETUP, $event);
63
64         return $setup;
65     }
66
67     /**
68      * {@inheritdoc}
69      */
70     public function test(Environment $env, SpecificationIterator $iterator, $skip = false)
71     {
72         return $this->baseTester->test($env, $iterator, $skip);
73     }
74
75     /**
76      * {@inheritdoc}
77      */
78     public function tearDown(Environment $env, SpecificationIterator $iterator, $skip, TestResult $result)
79     {
80         $event = new BeforeSuiteTeardown($env, $iterator, $result);
81         $this->eventDispatcher->dispatch($event::BEFORE_TEARDOWN, $event);
82
83         $teardown = $this->baseTester->tearDown($env, $iterator, $skip, $result);
84
85         $event = new AfterSuiteTested($env, $iterator, $result, $teardown);
86         $this->eventDispatcher->dispatch($event::AFTER, $event);
87
88         return $teardown;
89     }
90 }