Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssertIntegrationForm.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Integration\Test\Fixture\Integration;
10 use Magento\Integration\Test\Page\Adminhtml\IntegrationIndex;
11 use Magento\Integration\Test\Page\Adminhtml\IntegrationNew;
13 
18 {
24  protected $skippedFields = [
25  'integration_id',
26  ];
27 
33  protected $errorMessagePattern = "Data in '%s' field not equal.\nExpected: %s\nActual: %s";
34 
41 
52  public function processAssert(
53  IntegrationIndex $integrationIndexPage,
54  IntegrationNew $integrationNewPage,
55  Integration $integration,
56  Integration $initialIntegration = null,
58  ) {
59  $this->strictResourcesVerify = $strictResourcesVerify;
60  $data = ($initialIntegration === null)
61  ? $integration->getData()
62  : array_merge($initialIntegration->getData(), $integration->getData());
63  $filter = [
64  'name' => $data['name'],
65  ];
66 
67  $integrationIndexPage->open();
68  $integrationIndexPage->getIntegrationGrid()->searchAndOpen($filter);
69  $formData = $integrationNewPage->getIntegrationForm()->getData();
70  unset($formData['current_password']);
71  unset($data['current_password']);
72  $dataDiff = $this->verifyForm($formData, $data);
73  \PHPUnit\Framework\Assert::assertEmpty(
74  $dataDiff,
75  'Integration form was filled incorrectly.'
76  . "\nLog:\n" . implode(";\n", $dataDiff)
77  );
78  }
79 
87  protected function verifyForm(array $formData, array $fixtureData)
88  {
89  $errorMessages = [];
90  foreach ($fixtureData as $key => $value) {
91  if (in_array($key, $this->skippedFields)) {
92  continue;
93  } elseif ($key === 'resources') {
94  $errorMessages = array_merge(
95  $errorMessages,
96  $this->checkResources($formData[$key], $fixtureData[$key])
97  );
98  } elseif ($value !== $formData[$key]) {
99  $errorMessages[] = $this->getErrorMessage($value, $formData[$key], $key);
100  }
101  }
102 
103  return $errorMessages;
104  }
105 
113  protected function checkResources(array $formData, $fixtureData)
114  {
115  $errorMessages = [];
116  $diff = $this->getResourcesDifferentData($formData, $fixtureData);
117  if (array_filter($diff)) {
118  $errorMessages[] = $this->getErrorMessage($fixtureData, $formData, 'resources');
119  }
120 
121  return $errorMessages;
122  }
123 
131  protected function getResourcesDifferentData(array $formData, $fixtureData)
132  {
133  $fixtureData = is_array($fixtureData) ? $fixtureData : [$fixtureData];
134  return $this->strictResourcesVerify
135  ? array_diff($formData, $fixtureData)
136  : $this->notStrictVerification($formData, $fixtureData);
137  }
138 
146  protected function notStrictVerification(array $formData, array $fixtureData)
147  {
148  $diff = [];
149  foreach ($fixtureData as $itemData) {
150  $diff[] = in_array($itemData, $formData) ? null : true;
151  }
152 
153  return $diff;
154  }
155 
164  protected function getErrorMessage($fixtureData, $formData, $field)
165  {
166  $fixtureData = is_array($fixtureData) ? $this->arrayToString($fixtureData) : $fixtureData;
167  $formData = is_array($formData) ? $this->arrayToString($formData) : $formData;
168  return sprintf($this->errorMessagePattern, $field, $fixtureData, $formData);
169  }
170 
176  public function toString()
177  {
178  return 'Integration form was filled correctly.';
179  }
180 }
processAssert(IntegrationIndex $integrationIndexPage, IntegrationNew $integrationNewPage, Integration $integration, Integration $initialIntegration=null, $strictResourcesVerify=false)
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$value
Definition: gender.phtml:16