2 namespace TYPO3\CMS\Core\Tests\Acceptance\Backend\Formhandler
;
5 * This file is part of the TYPO3 CMS project.
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
14 * The TYPO3 project - inspiring people to share!
17 use TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Step\Backend\Admin
;
18 use TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Support\Helper\Formhandler
;
19 use TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Support\Helper\FormHandlerElementTestDataObject
;
20 use TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Support\Page\PageTree
;
23 * Tests for basic element fields
25 class ElementsBasicCest
28 * Selector of the record container in the listview
32 protected static $listViewRecordSelector = '#recordlist-tx_styleguide_elements_basic';
34 public function _before(Admin
$I, PageTree
$pageTree)
36 $I->useExistingSession();
37 // Ensure main content frame is fully loaded, otherwise there are load-race-conditions
38 $I->switchToIFrame('list_frame');
39 $I->waitForText('Web Content Management System');
43 $pageTree->openPath(['styleguide TCA demo', 'elements basic']);
44 $I->switchToIFrame('list_frame');
49 * @param Formhandler $formhandler
51 public function checkThatBrowserSideValidationsWorkAndSaveRecord(Admin
$I, Formhandler
$formhandler)
53 $this->waitForFormReady($I);
57 new FormHandlerElementTestDataObject(
58 'This is a demo text with 2 numbers #!',
59 'This is a demo text with 2 numbers #!'
62 'input_2, size=10' => [
63 new FormHandlerElementTestDataObject(
64 'This is a demo text with 2 numbers #!',
65 'This is a demo text with 2 numbers #!'
69 new FormHandlerElementTestDataObject(
74 'input_4 eval=alpha' => [
75 new FormHandlerElementTestDataObject(
79 new FormHandlerElementTestDataObject(
80 'Non-latin characters: ŠĐŽĆČ',
84 'input_5 eval=alphanum' => [
85 new FormHandlerElementTestDataObject(
91 'input_8 eval=double2' => [
92 new FormHandlerElementTestDataObject(
97 new FormHandlerElementTestDataObject(
102 new FormHandlerElementTestDataObject(
107 new FormHandlerElementTestDataObject(
112 new FormHandlerElementTestDataObject(
118 'input_9 eval=int' => [
119 new FormHandlerElementTestDataObject(
125 new FormHandlerElementTestDataObject(
130 new FormHandlerElementTestDataObject(
135 new FormHandlerElementTestDataObject(
141 'input_10 eval=is_in, is_in=abc123' => [
142 new FormHandlerElementTestDataObject(
146 new FormHandlerElementTestDataObject(
151 'input_11 eval=lower' => [
152 new FormHandlerElementTestDataObject(
157 'input_12 eval=md5' => [
158 new FormHandlerElementTestDataObject(
160 '748469dd64911af8df8f9a3dcb2c9378',
161 '748469dd64911af8df8f9a3dcb2c9378'
163 new FormHandlerElementTestDataObject(
165 '792a085606250c47d6ebb8c98804d5b0',
166 '792a085606250c47d6ebb8c98804d5b0',
167 '792a085606250c47d6ebb8c98804d5b0',
169 'Check that whitespaces are not trimmed.'
172 'input_13 eval=nospace' => [
173 new FormHandlerElementTestDataObject(
178 'input_15 eval=num' => [
179 new FormHandlerElementTestDataObject(
183 new FormHandlerElementTestDataObject(
187 new FormHandlerElementTestDataObject(
191 new FormHandlerElementTestDataObject(
196 'input_16 eval=password' => [
197 new FormHandlerElementTestDataObject(
203 'input_19 eval=trim' => [
204 new FormHandlerElementTestDataObject(
208 new FormHandlerElementTestDataObject(
213 'input_23 eval=upper' => [
214 new FormHandlerElementTestDataObject(
219 'input_25 eval=int, default=0, range lower=-2, range upper=2' => [
220 new FormHandlerElementTestDataObject(
225 new FormHandlerElementTestDataObject(
230 new FormHandlerElementTestDataObject(
235 new FormHandlerElementTestDataObject(
241 'Expecting a modal with error on trying to save.'
244 new FormHandlerElementTestDataObject(
250 'Expecting a modal with error on trying to save.'
255 foreach ($fieldTests as $fieldLabel => $testData) {
256 $formhandler->fillSeeSaveAndClearInputField(
265 * @param Formhandler $formhandler
267 public function checkThatValidationWorks_evalYear(Admin
$I, Formhandler
$formhandler)
269 $this->waitForFormReady($I);
272 'input_24 eval=year' => [
273 new FormHandlerElementTestDataObject(
278 new FormHandlerElementTestDataObject(
283 new FormHandlerElementTestDataObject(
289 'Invalid character is converted to current year'
294 $this->runTests($formhandler, $testData);
298 * @param \TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Step\Backend\Admin $I
299 * @param \TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Support\Helper\Formhandler $formhandler
302 public function checkThatBrowserSideValidationWorks_EvalDate(Admin
$I, Formhandler
$formhandler)
304 $this->skip("Instable Test is skipped due to repeated failure");
305 //@todo fix this test
307 $this->waitForFormReady($I);
309 'input_6 eval=date' => [
310 new FormHandlerElementTestDataObject(
313 '2016-01-29T00:00:00Z',
314 '2016-01-29T00:00:00+00:00'
316 new FormHandlerElementTestDataObject(
319 '2017-01-13T00:00:00Z',
320 '2017-01-13T00:00:00+00:00'
322 new FormHandlerElementTestDataObject(
325 '2016-02-29T00:00:00Z',
326 '2016-02-29T00:00:00+00:00',
328 'Check valid leap year input'
330 new FormHandlerElementTestDataObject(
333 '2015-03-01T00:00:00Z',
334 '2015-03-01T00:00:00+00:00',
336 'Check invalid leap year transformation'
340 $this->runTests($formhandler, $fieldData);
343 public function checkThatValidationWorks_EvalDate_TypeDate(Admin
$I, Formhandler
$formhandler)
345 $this->waitForFormReady($I);
347 'input_36 dbType=date eval=date' => [
348 new FormHandlerElementTestDataObject(
351 '2016-01-29T00:00:00Z',
352 '2016-01-29T00:00:00+00:00'
354 new FormHandlerElementTestDataObject(
357 '2017-01-13T00:00:00Z',
358 '2017-01-13T00:00:00+00:00'
360 new FormHandlerElementTestDataObject(
363 '2016-02-29T00:00:00Z',
364 '2016-02-29T00:00:00+00:00',
366 'Check valid leap year input'
368 new FormHandlerElementTestDataObject(
371 '2015-03-01T00:00:00Z',
372 '2015-03-01T00:00:00+00:00',
374 'Check invalid leap year transformation'
378 $this->runTests($formhandler, $testData);
381 public function checkThatValidationWorks_EvalDateTime(Admin
$I, Formhandler
$formhandler)
383 $this->waitForFormReady($I);
385 'input_7 eval=datetime' => [
386 new FormHandlerElementTestDataObject(
389 '2016-01-29T05:23:00Z',
390 '2016-01-29T05:23:00+00:00'
392 new FormHandlerElementTestDataObject(
395 '2017-01-13T05:23:00Z',
396 '2017-01-13T05:23:00+00:00'
398 new FormHandlerElementTestDataObject(
401 '2016-02-29T05:23:00Z',
402 '2016-02-29T05:23:00+00:00',
404 'Check valid leap year input'
406 new FormHandlerElementTestDataObject(
409 '2015-03-01T05:23:00Z',
410 '2015-03-01T05:23:00+00:00',
412 'Check invalid leap year transformation'
416 $this->runTests($formhandler, $testData);
419 public function checkThatValidationWorks_EvalDateTime_DbTypeDateTime(Admin
$I, Formhandler
$formhandler)
421 $this->skip("Instable Test is skipped due to repeated failure");
422 //@todo fix this test
423 $this->waitForFormReady($I);
425 'input_37 dbType=datetime eval=datetime' => [
426 new FormHandlerElementTestDataObject(
429 '2016-01-29T05:23:00Z',
430 '2016-01-29T05:23:00+00:00'
432 new FormHandlerElementTestDataObject(
435 '2017-01-13T05:23:00Z',
436 '2017-01-13T05:23:00+00:00'
438 new FormHandlerElementTestDataObject(
441 '2016-02-29T05:23:00Z',
442 '2016-02-29T05:23:00+00:00',
444 'Check valid leap year input'
446 new FormHandlerElementTestDataObject(
449 '2015-03-01T05:23:00Z',
450 '2015-03-01T05:23:00+00:00',
452 'Check invalid leap year transformation'
456 $this->runTests($formhandler, $testData);
459 public function checkThatValidationWorks_evalTime(Admin
$I, Formhandler
$formhandler)
461 $this->waitForFormReady($I);
463 'input_17 eval=time' => [
464 new FormHandlerElementTestDataObject(
468 (new \
DateTime('13:30'))->getTimestamp()
470 new FormHandlerElementTestDataObject(
474 (new \
DateTime('12:03'))->getTimestamp()
476 new FormHandlerElementTestDataObject(
480 (new \
DateTime('12:34'))->getTimestamp()
482 new FormHandlerElementTestDataObject(
486 (new \
DateTime('12:09'))->getTimestamp()
488 new FormHandlerElementTestDataObject(
492 (new \
DateTime('12:06'))->getTimestamp()
496 $this->runTests($formhandler, $testData);
499 public function checkThatValidationWorks_evalTimesec(Admin
$I, Formhandler
$formhandler)
501 $this->skip("Instable Test is skipped due to repeated failure");
502 //@todo fix this test
504 $this->waitForFormReady($I);
506 'input_18 eval=timesec' => [
507 new FormHandlerElementTestDataObject(
511 (new \
DateTime('13:30:00'))->getTimestamp()
513 new FormHandlerElementTestDataObject(
517 (new \
DateTime('12:34:05'))->getTimestamp()
519 new FormHandlerElementTestDataObject(
523 (new \
DateTime('12:09:04'))->getTimestamp()
527 $this->runTests($formhandler, $testData);
531 * @param \TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Support\Helper\Formhandler $formhandler
534 protected function runTests(Formhandler
$formhandler, $fieldData)
536 foreach ($fieldData as $fieldLabel => $testData) {
537 $formhandler->fillSeeSaveAndClearInputField(
545 * @param \TYPO3\CMS\Components\TestingFramework\Core\Acceptance\Step\Backend\Admin $I
547 protected function waitForFormReady(Admin
$I)
549 $editRecordLinkCssPath = self
::$listViewRecordSelector . ' a[data-original-title="Edit record"]';
550 $I->waitForElement($editRecordLinkCssPath, 30);
551 $I->click($editRecordLinkCssPath);
552 $I->waitForText('Edit Form', 3, 'h1');
556 * From Codeception/Scenario
558 protected function skip($message)
560 throw new \
PHPUnit_Framework_SkippedTestError($message);