Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Behat / Output / Node / EventListener / AST / FeatureListener.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\Behat\Output\Node\EventListener\AST;
12
13 use Behat\Behat\EventDispatcher\Event\AfterFeatureSetup;
14 use Behat\Behat\EventDispatcher\Event\AfterFeatureTested;
15 use Behat\Behat\EventDispatcher\Event\FeatureTested;
16 use Behat\Behat\Output\Node\Printer\FeaturePrinter;
17 use Behat\Behat\Output\Node\Printer\SetupPrinter;
18 use Behat\Testwork\Output\Formatter;
19 use Behat\Testwork\Output\Node\EventListener\EventListener;
20 use Symfony\Component\EventDispatcher\Event;
21
22 /**
23  * Listens to feature events and calls appropriate printers.
24  *
25  * @author Konstantin Kudryashov <ever.zet@gmail.com>
26  */
27 final class FeatureListener implements EventListener
28 {
29     /**
30      * @var FeaturePrinter
31      */
32     private $featurePrinter;
33     /**
34      * @var SetupPrinter
35      */
36     private $setupPrinter;
37
38     /**
39      * Initializes listener.
40      *
41      * @param FeaturePrinter $featurePrinter
42      * @param SetupPrinter   $setupPrinter
43      */
44     public function __construct(FeaturePrinter $featurePrinter, SetupPrinter $setupPrinter)
45     {
46         $this->featurePrinter = $featurePrinter;
47         $this->setupPrinter = $setupPrinter;
48     }
49
50     /**
51      * {@inheritdoc}
52      */
53     public function listenEvent(Formatter $formatter, Event $event, $eventName)
54     {
55         if (!$event instanceof FeatureTested) {
56             return;
57         }
58
59         $this->printHeaderOnBeforeEvent($formatter, $event);
60         $this->printFooterOnAfterEvent($formatter, $event);
61     }
62
63     /**
64      * Prints feature header on BEFORE event.
65      *
66      * @param Formatter $formatter
67      * @param Event     $event
68      */
69     private function printHeaderOnBeforeEvent(Formatter $formatter, Event $event)
70     {
71         if (!$event instanceof AfterFeatureSetup) {
72             return;
73         }
74
75         $this->setupPrinter->printSetup($formatter, $event->getSetup());
76         $this->featurePrinter->printHeader($formatter, $event->getFeature());
77     }
78
79     /**
80      * Prints feature footer on AFTER event.
81      *
82      * @param Formatter $formatter
83      * @param Event     $event
84      */
85     private function printFooterOnAfterEvent(Formatter $formatter, Event $event)
86     {
87         if (!$event instanceof AfterFeatureTested) {
88             return;
89         }
90
91         $this->setupPrinter->printTeardown($formatter, $event->getTeardown());
92         $this->featurePrinter->printFooter($formatter, $event->getTestResult());
93     }
94 }