‪TYPO3CMS  11.5
ArgumentsTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
23 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
24 
28 class ‪ArgumentsTest extends UnitTestCase
29 {
33  public function ‪argumentsObjectIsOfScopePrototype(): void
34  {
35  $arguments1 = new ‪Arguments();
36  $arguments2 = new ‪Arguments();
37  self::assertNotSame($arguments1, $arguments2, 'The arguments object is not of scope prototype!');
38  }
39 
43  public function ‪addingAnArgumentManuallyWorks(): void
44  {
45  $arguments = new ‪Arguments();
46  $newArgument = new ‪Argument('argumentName1234', 'dummyValue');
47  $arguments->addArgument($newArgument);
48  self::assertSame($newArgument, $arguments->getArgument('argumentName1234'), 'The added and retrieved argument is not the same.');
49  }
50 
55  {
56  $arguments = new ‪Arguments();
57  $mockFirstArgument = $this->getMockBuilder(Argument::class)
58  ->onlyMethods(['getName'])
59  ->disableOriginalConstructor()
60  ->getMock();
61  $mockFirstArgument->method('getName')->willReturn('argumentName1234');
62  $arguments->addArgument($mockFirstArgument);
63  $mockSecondArgument = $this->getMockBuilder(Argument::class)
64  ->onlyMethods(['getName'])
65  ->disableOriginalConstructor()
66  ->getMock();
67  $mockSecondArgument->method('getName')->willReturn('argumentName1234');
68  $arguments->addArgument($mockSecondArgument);
69  self::assertSame($mockSecondArgument, $arguments->getArgument('argumentName1234'), 'The added and retrieved argument is not the same.');
70  }
71 
76  {
77  $arguments = new ‪Arguments();
78  $newArgument = $arguments->addNewArgument('someArgument');
79  self::assertInstanceOf(Argument::class, $newArgument);
80  }
81 
86  {
87  $mockArgument = $this->getMockBuilder(Argument::class)
88  ->onlyMethods(['getName'])
89  ->disableOriginalConstructor()
90  ->getMock();
91  $mockArgument->method('getName')->willReturn('argumentName1234');
92  $arguments = new ‪Arguments();
93  $arguments[] = $mockArgument;
94  self::assertTrue($arguments->hasArgument('argumentName1234'), 'Added argument does not exist.');
95  self::assertSame($mockArgument, $arguments->getArgument('argumentName1234'), 'Added and retrieved arguments are not the same.');
96  }
97 
102  {
103  $mockArgument = $this->getMockBuilder(Argument::class)
104  ->onlyMethods(['getName'])
105  ->disableOriginalConstructor()
106  ->getMock();
107  $mockArgument->method('getName')->willReturn('argumentName1234');
108  $arguments = new ‪Arguments();
109  $arguments[] = $mockArgument;
110  self::assertSame($mockArgument, $arguments['argumentName1234'], 'Argument retrieved by array access is not the one we added.');
111  }
112 
117  {
118  $arguments = new ‪Arguments();
119  try {
120  $arguments->getArgument('someArgument');
121  self::fail('getArgument() did not throw an exception although the specified argument does not exist.');
122  } catch (‪NoSuchArgumentException $exception) {
123  }
124  }
125 
129  public function ‪issetReturnsCorrectResult(): void
130  {
131  $mockArgument = $this->getMockBuilder(Argument::class)
132  ->onlyMethods(['getName'])
133  ->disableOriginalConstructor()
134  ->getMock();
135  $mockArgument->method('getName')->willReturn('argumentName1234');
136  $arguments = new ‪Arguments();
137  self::assertFalse(isset($arguments['argumentName1234']), 'isset() did not return FALSE.');
138  $arguments[] = $mockArgument;
139  self::assertTrue(isset($arguments['argumentName1234']), 'isset() did not return TRUE.');
140  }
141 
146  {
147  $mockArgument1 = $this->getMockBuilder(Argument::class)
148  ->onlyMethods(['getName'])
149  ->disableOriginalConstructor()
150  ->getMock();
151  $mockArgument1->method('getName')->willReturn('argumentName1');
152  $mockArgument2 = $this->getMockBuilder(Argument::class)
153  ->onlyMethods(['getName'])
154  ->disableOriginalConstructor()
155  ->getMock();
156  $mockArgument2->method('getName')->willReturn('argumentName2');
157  $mockArgument3 = $this->getMockBuilder(Argument::class)
158  ->onlyMethods(['getName'])
159  ->disableOriginalConstructor()
160  ->getMock();
161  $mockArgument3->method('getName')->willReturn('argumentName3');
162  $arguments = new ‪Arguments();
163  $arguments[] = $mockArgument1;
164  $arguments[] = $mockArgument2;
165  $arguments[] = $mockArgument3;
166  $expectedArgumentNames = ['argumentName1', 'argumentName2', 'argumentName3'];
167  self::assertEquals($expectedArgumentNames, $arguments->getArgumentNames(), 'Returned argument names were not as expected.');
168  }
169 
174  {
175  $mockArgument1 = $this->getMockBuilder(Argument::class)
176  ->onlyMethods(['getName', 'getShortName'])
177  ->disableOriginalConstructor()
178  ->getMock();
179  $mockArgument1->method('getName')->willReturn('argumentName1');
180  $mockArgument1->method('getShortName')->willReturn('a');
181  $mockArgument2 = $this->getMockBuilder(Argument::class)
182  ->onlyMethods(['getName', 'getShortName'])
183  ->disableOriginalConstructor()
184  ->getMock();
185  $mockArgument2->method('getName')->willReturn('argumentName2');
186  $mockArgument2->method('getShortName')->willReturn('b');
187  $mockArgument3 = $this->getMockBuilder(Argument::class)
188  ->onlyMethods(['getName', 'getShortName'])
189  ->disableOriginalConstructor()
190  ->getMock();
191  $mockArgument3->method('getName')->willReturn('argumentName3');
192  $mockArgument3->method('getShortName')->willReturn('c');
193  $arguments = new ‪Arguments();
194  $arguments[] = $mockArgument1;
195  $arguments[] = $mockArgument2;
196  $arguments[] = $mockArgument3;
197  $expectedShortNames = ['a', 'b', 'c'];
198  self::assertEquals($expectedShortNames, $arguments->getArgumentShortNames(), 'Returned argument short names were not as expected.');
199  }
200 
205  {
206  $mockArgument = $this->getMockBuilder(Argument::class)
207  ->onlyMethods(['getName'])
208  ->disableOriginalConstructor()
209  ->getMock();
210  $mockArgument->method('getName')->willReturn('dummyName');
211  $arguments = new ‪Arguments();
212  $addedArgument = $arguments->addNewArgument('dummyName');
213  self::assertInstanceOf(Argument::class, $addedArgument, 'addNewArgument() either did not add a new argument or did not return it.');
214  $retrievedArgument = $arguments['dummyName'];
215  self::assertSame($addedArgument, $retrievedArgument, 'The added and the retrieved argument are not the same.');
216  }
217 
222  {
223  $mockArgument = $this->getMockBuilder(Argument::class)
224  ->onlyMethods(['getName'])
225  ->disableOriginalConstructor()
226  ->getMock();
227  $mockArgument->method('getName')->willReturn('dummyName');
228  $arguments = new ‪Arguments();
229  $arguments->addNewArgument('dummyName');
230  }
231 
236  {
237  $arguments = new ‪Arguments();
238  $argument = $arguments->addNewArgument('dummyName', 'Text', true);
239  self::assertTrue($argument->isRequired());
240  }
241 
246  {
247  $arguments = new ‪Arguments();
248  $argument = $arguments->addNewArgument('dummyName', 'Text', false, 'someDefaultValue');
249  self::assertFalse($argument->isRequired());
250  }
251 
256  {
257  $this->expectException(\LogicException::class);
258  $this->expectExceptionCode(1210858451);
259  $arguments = new ‪Arguments();
260  $arguments->nonExistingMethod();
261  }
262 
266  public function ‪removeAllClearsAllArguments(): void
267  {
268  $mockArgument1 = $this->getMockBuilder(Argument::class)
269  ->onlyMethods(['getName', 'getShortName'])
270  ->disableOriginalConstructor()
271  ->getMock();
272  $mockArgument1->method('getName')->willReturn('argumentName1');
273  $mockArgument2 = $this->getMockBuilder(Argument::class)
274  ->onlyMethods(['getName', 'getShortName'])
275  ->disableOriginalConstructor()
276  ->getMock();
277  $mockArgument2->method('getName')->willReturn('argumentName2');
278  $arguments = new ‪Arguments();
279  $arguments[] = $mockArgument1;
280  $arguments[] = $mockArgument2;
281  self::assertTrue($arguments->hasArgument('argumentName2'));
282  $arguments->removeAll();
283  self::assertFalse($arguments->hasArgument('argumentName2'));
284  }
285 }
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addNewArgumentCreatesAndAddsNewArgument
‪addNewArgumentCreatesAndAddsNewArgument()
Definition: ArgumentsTest.php:204
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addingAnArgumentReplacesArgumentWithSameName
‪addingAnArgumentReplacesArgumentWithSameName()
Definition: ArgumentsTest.php:54
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\callingInvalidMethodThrowsException
‪callingInvalidMethodThrowsException()
Definition: ArgumentsTest.php:255
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\getArgumentNamesReturnsNamesOfAddedArguments
‪getArgumentNamesReturnsNamesOfAddedArguments()
Definition: ArgumentsTest.php:145
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller
Definition: ActionControllerTest.php:18
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\removeAllClearsAllArguments
‪removeAllClearsAllArguments()
Definition: ArgumentsTest.php:266
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\getArgumentShortNamesReturnsShortNamesOfAddedArguments
‪getArgumentShortNamesReturnsShortNamesOfAddedArguments()
Definition: ArgumentsTest.php:173
‪TYPO3\CMS\Extbase\Mvc\Controller\Arguments
Definition: Arguments.php:27
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addingAnArgumentManuallyWorks
‪addingAnArgumentManuallyWorks()
Definition: ArgumentsTest.php:43
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addNewArgumentCanAddArgumentsMarkedAsRequired
‪addNewArgumentCanAddArgumentsMarkedAsRequired()
Definition: ArgumentsTest.php:235
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\argumentsObjectIsOfScopePrototype
‪argumentsObjectIsOfScopePrototype()
Definition: ArgumentsTest.php:33
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\issetReturnsCorrectResult
‪issetReturnsCorrectResult()
Definition: ArgumentsTest.php:129
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addNewArgumentCanAddArgumentsMarkedAsOptionalWithDefaultValues
‪addNewArgumentCanAddArgumentsMarkedAsOptionalWithDefaultValues()
Definition: ArgumentsTest.php:245
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addingArgumentThroughArrayAccessWorks
‪addingArgumentThroughArrayAccessWorks()
Definition: ArgumentsTest.php:85
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\getArgumentWithNonExistingArgumentNameThrowsException
‪getArgumentWithNonExistingArgumentNameThrowsException()
Definition: ArgumentsTest.php:116
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addNewArgumentProvidesFluentInterface
‪addNewArgumentProvidesFluentInterface()
Definition: ArgumentsTest.php:75
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest
Definition: ArgumentsTest.php:29
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\retrievingArgumentThroughArrayAccessWorks
‪retrievingArgumentThroughArrayAccessWorks()
Definition: ArgumentsTest.php:101
‪TYPO3\CMS\Extbase\Mvc\Controller\Argument
Definition: Argument.php:27
‪TYPO3\CMS\Extbase\Mvc\Exception\NoSuchArgumentException
Definition: NoSuchArgumentException.php:25
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Controller\ArgumentsTest\addNewArgumentAssumesTextDataTypeByDefault
‪addNewArgumentAssumesTextDataTypeByDefault()
Definition: ArgumentsTest.php:221