Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ArgumentSequenceTest.php
Go to the documentation of this file.
1 <?php
7 
8 require_once '_files/ClassesForArgumentSequence.php';
9 class ArgumentSequenceTest extends \PHPUnit\Framework\TestCase
10 {
14  protected $_validator;
15 
19  protected $_fixturePath;
20 
21  protected function setUp()
22  {
23  $path = realpath(__DIR__) . '/_files/ClassesForArgumentSequence.php';
24  $this->_fixturePath = str_replace('\\', '/', $path);
25  $this->_validator = new \Magento\Framework\Code\Validator\ArgumentSequence();
26 
28  $this->_validator->validate('\ArgumentSequence\ParentClass');
29  }
30 
31  public function testValidSequence()
32  {
33  $this->assertTrue($this->_validator->validate('\ArgumentSequence\ValidChildClass'));
34  }
35 
36  public function testInvalidSequence()
37  {
38  $expectedSequence = '$contextObject, $parentRequiredObject, $parentRequiredScalar, ' .
39  '$childRequiredObject, $childRequiredScalar, $parentOptionalObject, $data, $parentOptionalScalar, ' .
40  '$childOptionalObject, $childOptionalScalar';
41 
42  $actualSequence = '$contextObject, $childRequiredObject, $parentRequiredObject, $parentRequiredScalar, ' .
43  '$childRequiredScalar, $parentOptionalObject, $data, $parentOptionalScalar, ' .
44  '$childOptionalObject, $childOptionalScalar';
45 
46  $message = 'Incorrect argument sequence in class %s in ' .
47  $this->_fixturePath .
48  PHP_EOL .
49  'Required: %s' .
50  PHP_EOL .
51  'Actual : %s' .
52  PHP_EOL;
53  $message = sprintf($message, '\ArgumentSequence\InvalidChildClass', $expectedSequence, $actualSequence);
54  $this->expectException(\Magento\Framework\Exception\ValidatorException::class);
55  $this->expectExceptionMessage($message);
56  $this->_validator->validate('\ArgumentSequence\InvalidChildClass');
57  }
58 }
defined('TESTS_BP')||define('TESTS_BP' __DIR__
Definition: _bootstrap.php:60
$message