Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / symfony / console / Tests / Helper / HelperSetTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\Console\Tests\Helper;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Console\Helper\HelperSet;
16 use Symfony\Component\Console\Command\Command;
17
18 class HelperSetTest extends TestCase
19 {
20     public function testConstructor()
21     {
22         $mock_helper = $this->getGenericMockHelper('fake_helper');
23         $helperset = new HelperSet(array('fake_helper_alias' => $mock_helper));
24
25         $this->assertEquals($mock_helper, $helperset->get('fake_helper_alias'), '__construct sets given helper to helpers');
26         $this->assertTrue($helperset->has('fake_helper_alias'), '__construct sets helper alias for given helper');
27     }
28
29     public function testSet()
30     {
31         $helperset = new HelperSet();
32         $helperset->set($this->getGenericMockHelper('fake_helper', $helperset));
33         $this->assertTrue($helperset->has('fake_helper'), '->set() adds helper to helpers');
34
35         $helperset = new HelperSet();
36         $helperset->set($this->getGenericMockHelper('fake_helper_01', $helperset));
37         $helperset->set($this->getGenericMockHelper('fake_helper_02', $helperset));
38         $this->assertTrue($helperset->has('fake_helper_01'), '->set() will set multiple helpers on consecutive calls');
39         $this->assertTrue($helperset->has('fake_helper_02'), '->set() will set multiple helpers on consecutive calls');
40
41         $helperset = new HelperSet();
42         $helperset->set($this->getGenericMockHelper('fake_helper', $helperset), 'fake_helper_alias');
43         $this->assertTrue($helperset->has('fake_helper'), '->set() adds helper alias when set');
44         $this->assertTrue($helperset->has('fake_helper_alias'), '->set() adds helper alias when set');
45     }
46
47     public function testHas()
48     {
49         $helperset = new HelperSet(array('fake_helper_alias' => $this->getGenericMockHelper('fake_helper')));
50         $this->assertTrue($helperset->has('fake_helper'), '->has() finds set helper');
51         $this->assertTrue($helperset->has('fake_helper_alias'), '->has() finds set helper by alias');
52     }
53
54     public function testGet()
55     {
56         $helper_01 = $this->getGenericMockHelper('fake_helper_01');
57         $helper_02 = $this->getGenericMockHelper('fake_helper_02');
58         $helperset = new HelperSet(array('fake_helper_01_alias' => $helper_01, 'fake_helper_02_alias' => $helper_02));
59         $this->assertEquals($helper_01, $helperset->get('fake_helper_01'), '->get() returns correct helper by name');
60         $this->assertEquals($helper_01, $helperset->get('fake_helper_01_alias'), '->get() returns correct helper by alias');
61         $this->assertEquals($helper_02, $helperset->get('fake_helper_02'), '->get() returns correct helper by name');
62         $this->assertEquals($helper_02, $helperset->get('fake_helper_02_alias'), '->get() returns correct helper by alias');
63
64         $helperset = new HelperSet();
65         try {
66             $helperset->get('foo');
67             $this->fail('->get() throws InvalidArgumentException when helper not found');
68         } catch (\Exception $e) {
69             $this->assertInstanceOf('\InvalidArgumentException', $e, '->get() throws InvalidArgumentException when helper not found');
70             $this->assertInstanceOf('Symfony\Component\Console\Exception\ExceptionInterface', $e, '->get() throws domain specific exception when helper not found');
71             $this->assertContains('The helper "foo" is not defined.', $e->getMessage(), '->get() throws InvalidArgumentException when helper not found');
72         }
73     }
74
75     public function testSetCommand()
76     {
77         $cmd_01 = new Command('foo');
78         $cmd_02 = new Command('bar');
79
80         $helperset = new HelperSet();
81         $helperset->setCommand($cmd_01);
82         $this->assertEquals($cmd_01, $helperset->getCommand(), '->setCommand() stores given command');
83
84         $helperset = new HelperSet();
85         $helperset->setCommand($cmd_01);
86         $helperset->setCommand($cmd_02);
87         $this->assertEquals($cmd_02, $helperset->getCommand(), '->setCommand() overwrites stored command with consecutive calls');
88     }
89
90     public function testGetCommand()
91     {
92         $cmd = new Command('foo');
93         $helperset = new HelperSet();
94         $helperset->setCommand($cmd);
95         $this->assertEquals($cmd, $helperset->getCommand(), '->getCommand() retrieves stored command');
96     }
97
98     public function testIteration()
99     {
100         $helperset = new HelperSet();
101         $helperset->set($this->getGenericMockHelper('fake_helper_01', $helperset));
102         $helperset->set($this->getGenericMockHelper('fake_helper_02', $helperset));
103
104         $helpers = array('fake_helper_01', 'fake_helper_02');
105         $i = 0;
106
107         foreach ($helperset as $helper) {
108             $this->assertEquals($helpers[$i++], $helper->getName());
109         }
110     }
111
112     private function getGenericMockHelper($name, HelperSet $helperset = null)
113     {
114         $mock_helper = $this->getMockBuilder('\Symfony\Component\Console\Helper\HelperInterface')->getMock();
115         $mock_helper->expects($this->any())
116             ->method('getName')
117             ->will($this->returnValue($name));
118
119         if ($helperset) {
120             $mock_helper->expects($this->any())
121                 ->method('setHelperSet')
122                 ->with($this->equalTo($helperset));
123         }
124
125         return $mock_helper;
126     }
127 }