Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ObjectTest.php
Go to the documentation of this file.
1 <?php
7 
8 class ObjectTest extends \PHPUnit\Framework\TestCase
9 {
13  protected $_model;
14 
15  protected function setUp()
16  {
17  $this->_model = new \Magento\Framework\Validator\DataObject();
18 
19  $fieldOneExactValue = new \Zend_Validate_Identical('field_one_value');
20  $fieldOneExactValue->setMessage("'field_one' does not match expected value");
21  $fieldOneLength = new \Zend_Validate_StringLength(['min' => 10]);
22 
23  $fieldTwoExactValue = new \Zend_Validate_Identical('field_two_value');
24  $fieldTwoExactValue->setMessage("'field_two' does not match expected value");
25  $fieldTwoLength = new \Zend_Validate_StringLength(['min' => 5]);
26 
27  $entityValidity = new \Zend_Validate_Callback([$this, 'isEntityValid']);
28  $entityValidity->setMessage('Entity is not valid.');
29 
30  $this->_model->addRule(
31  $fieldOneLength,
32  'field_one'
33  )->addRule(
34  $fieldOneExactValue,
35  'field_one'
36  )->addRule(
37  $fieldTwoLength,
38  'field_two'
39  )->addRule(
40  $fieldTwoExactValue,
41  'field_two'
42  )->addRule(
43  $entityValidity
44  );
45  }
46 
47  protected function tearDown()
48  {
49  $this->_model = null;
50  }
51 
58  public function isEntityValid(\Magento\Framework\DataObject $entity)
59  {
60  return (bool)$entity->getData('is_valid');
61  }
62 
63  public function testAddRule()
64  {
65  $actualResult = $this->_model->addRule(new \Zend_Validate_Identical('field_one_value'), 'field_one');
66  $this->assertSame($this->_model, $actualResult, 'Methods chaining is broken.');
67  }
68 
69  public function testGetMessages()
70  {
71  $messages = $this->_model->getMessages();
72  $this->assertInternalType('array', $messages);
73  }
74 
80  public function testIsValid(array $inputEntityData, array $expectedErrors)
81  {
82  $entity = new \Magento\Framework\DataObject($inputEntityData);
83  $isValid = $this->_model->isValid($entity);
84  $this->assertFalse($isValid, 'Validation is expected to fail.');
85 
86  $actualMessages = $this->_model->getMessages();
87  $this->assertCount(count($expectedErrors), $actualMessages, 'Number of messages does not meet expectations.');
88  foreach ($expectedErrors as $errorIndex => $expectedErrorMessage) {
90  $actualMessage = $actualMessages[$errorIndex];
91  $this->assertEquals($expectedErrorMessage, $actualMessage);
92  }
93  }
94 
98  public function validateDataProvider()
99  {
100  return [
101  'only "field_one" is invalid' => [
102  ['field_one' => 'one_value', 'field_two' => 'field_two_value', 'is_valid' => true],
103  ["'one_value' is less than 10 characters long", "'field_one' does not match expected value"],
104  ],
105  'only "field_two" is invalid' => [
106  ['field_one' => 'field_one_value', 'field_two' => 'two_value', 'is_valid' => true],
107  ["'field_two' does not match expected value"],
108  ],
109  'entity as a whole is invalid' => [
110  ['field_one' => 'field_one_value', 'field_two' => 'field_two_value'],
111  ['Entity is not valid.'],
112  ],
113  'errors aggregation' => [
114  ['field_one' => 'one_value', 'field_two' => 'two'],
115  [
116  "'one_value' is less than 10 characters long",
117  "'field_one' does not match expected value",
118  "'two' is less than 5 characters long",
119  "'field_two' does not match expected value",
120  'Entity is not valid.'
121  ],
122  ]
123  ];
124  }
125 }
isEntityValid(\Magento\Framework\DataObject $entity)
Definition: ObjectTest.php:58
$entity
Definition: element.phtml:22