Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AbstractExtensionTest.php
Go to the documentation of this file.
1 <?php
8 
9 use Magento\Mtf\TestCase\Injectable;
10 use Magento\Setup\Test\Page\Adminhtml\SetupWizard;
11 use Magento\Backend\Test\Page\Adminhtml\Dashboard;
12 use Magento\Setup\Test\Fixture\Extension;
13 use Magento\Setup\Test\Fixture\BackupOptions;
14 use Magento\Setup\Test\Fixture\RepoCredentials;
19 
23 abstract class AbstractExtensionTest extends Injectable
24 {
30  protected $setupWizard;
31 
37  protected $adminDashboard;
38 
46  public function __inject(
47  Dashboard $adminDashboard,
48  SetupWizard $setupWizard
49  ) {
50  $this->adminDashboard = $adminDashboard;
51  $this->setupWizard = $setupWizard;
52  }
53 
61  protected function repoAuthentication($needAuthentication, RepoCredentials $repoCredentials)
62  {
63  if ($needAuthentication) {
64  $this->setupWizard->getSystemConfig()->clickSystemConfig();
65  $this->setupWizard->getAuthentication()->fill($repoCredentials);
66  $this->setupWizard->getAuthentication()->clickSaveConfig();
67  $this->setupWizard->open();
68  }
69  }
70 
78  protected function readinessCheckAndBackup(
79  AssertSuccessfulReadinessCheck $assertReadiness,
80  BackupOptions $backupOptions
81  ) {
82  $this->readinessCheck($assertReadiness);
83  $this->setupWizard->getReadiness()->clickNext();
84  $this->backup($backupOptions);
85  $this->setupWizard->getCreateBackup()->clickNext();
86  }
87 
93  protected function readinessCheck(AssertSuccessfulReadinessCheck $assertReadiness)
94  {
95  // Readiness Check
96  $this->setupWizard->getReadiness()->clickReadinessCheck();
97 
98  $assertReadiness->processAssert($this->setupWizard);
99  }
100 
106  protected function backup(BackupOptions $backupOptions)
107  {
108  // Create Backup page
109  $this->setupWizard->getCreateBackup()->fill($backupOptions);
110  }
111 
122  protected function uninstallExtension(
123  Extension $extension,
124  BackupOptions $backupOptions,
125  AssertSuccessfulReadinessCheck $assertReadiness,
126  AssertFindExtensionOnGrid $assertFindExtensionOnGrid,
127  AssertExtensionAndVersionCheck $assertExtensionAndVersionCheck,
128  AssertSuccessMessage $assertSuccessMessage
129  ) {
130  // Open Extension Grid with installed extensions and find installed extension
131  $this->setupWizard->open();
132  $this->setupWizard->getSetupHome()->clickExtensionManager();
133  $this->setupWizard->getExtensionsGrid()->waitLoader();
134  $assertFindExtensionOnGrid->processAssert($this->setupWizard->getExtensionsGrid(), $extension);
135 
136  // Click to uninstall extension
137  $this->setupWizard->getExtensionsGrid()->clickUninstallButton($extension);
138 
139  $this->readinessCheckAndBackup($assertReadiness, $backupOptions);
140 
141  // Data Option (keep or remove data of extension)
142  $this->setupWizard->getDataOption()->clickNext();
143 
144  // Uninstall extension
145  $assertExtensionAndVersionCheck->processAssert(
146  $this->setupWizard,
147  $extension,
149  );
150  $this->setupWizard->getUpdaterExtension()->clickStartButton();
151  $assertSuccessMessage->processAssert(
152  $this->setupWizard,
153  $extension,
154  AssertSuccessMessage::TYPE_UNINSTALL
155  );
156 
157  // Check that extension is uninstalled
158  $this->setupWizard->open();
159  $this->setupWizard->getSetupHome()->clickExtensionManager();
160  $this->setupWizard->getExtensionsGrid()->waitLoader();
161 
162  if ($this->setupWizard->getExtensionsGrid()->findExtensionOnGrid($extension)) {
163  $this->fail('Extension is not uninstalled!');
164  }
165  }
166 
175  protected function installExtension(
176  Extension $extension,
177  BackupOptions $backupOptions,
178  AssertFindExtensionOnGrid $assertFindExtensionOnGrid,
179  AssertSuccessfulReadinessCheck $assertReadiness,
180  AssertExtensionAndVersionCheck $assertExtensionAndVersionCheck,
181  AssertSuccessMessage $assertSuccessMessage
182  ) {
183  // Open Extension Grid with extensions to install
184  $this->setupWizard->getSetupHome()->clickExtensionManager();
185  $this->setupWizard->getExtensionsGrid()->waitLoader();
186  $this->setupWizard->getExtensionsGrid()->clickInstallButton();
187 
188  // Find extension on grid and install
189  $assertFindExtensionOnGrid->processAssert($this->setupWizard->getExtensionsInstallGrid(), $extension);
190  $this->setupWizard->getExtensionsInstallGrid()->install($extension);
191 
192  $this->readinessCheckAndBackup($assertReadiness, $backupOptions);
193 
194  // Install Extension
195  $assertExtensionAndVersionCheck->processAssert(
196  $this->setupWizard,
197  $extension,
199  );
200  $this->setupWizard->getUpdaterExtension()->clickStartButton();
201  $assertSuccessMessage->processAssert(
202  $this->setupWizard,
203  $extension,
204  AssertSuccessMessage::TYPE_INSTALL
205  );
206 
207  // Open Web Setup Wizard
208  $this->setupWizard->open();
209  }
210 }
readinessCheckAndBackup(AssertSuccessfulReadinessCheck $assertReadiness, BackupOptions $backupOptions)
processAssert(SetupWizard $setupWizard, $package)
uninstallExtension(Extension $extension, BackupOptions $backupOptions, AssertSuccessfulReadinessCheck $assertReadiness, AssertFindExtensionOnGrid $assertFindExtensionOnGrid, AssertExtensionAndVersionCheck $assertExtensionAndVersionCheck, AssertSuccessMessage $assertSuccessMessage)
__inject(Dashboard $adminDashboard, SetupWizard $setupWizard)
repoAuthentication($needAuthentication, RepoCredentials $repoCredentials)
readinessCheck(AssertSuccessfulReadinessCheck $assertReadiness)
installExtension(Extension $extension, BackupOptions $backupOptions, AssertFindExtensionOnGrid $assertFindExtensionOnGrid, AssertSuccessfulReadinessCheck $assertReadiness, AssertExtensionAndVersionCheck $assertExtensionAndVersionCheck, AssertSuccessMessage $assertSuccessMessage)