/** * Assert that order Id is present in search results * * @param Dashboard $dashboard * @param GlobalSearch $search * @return void */ public function processAssert(Dashboard $dashboard, GlobalSearch $search) { $order = $search->getDataFieldConfig('query')['source']->getEntity(); $orderId = "Order #" . $order->getId(); $isVisibleInResult = $dashboard->getAdminPanelHeader()->isSearchResultVisible($orderId); \PHPUnit_Framework_Assert::assertTrue($isVisibleInResult, 'Order Id ' . $order->getId() . ' is absent in search results'); }
/** * Assert that Secure Urls Enabled. * * @param BrowserInterface $browser * @param Dashboard $dashboard * @param CustomerAccountLogin $customerAccountLogin * @return void */ public function processAssert(BrowserInterface $browser, Dashboard $dashboard, CustomerAccountLogin $customerAccountLogin) { $dashboard->open(); \PHPUnit_Framework_Assert::assertTrue(strpos($browser->getUrl(), 'https://') !== false, 'Secure Url is not displayed on backend.'); $customerAccountLogin->open(); \PHPUnit_Framework_Assert::assertTrue(strpos($browser->getUrl(), 'https://') !== false, 'Secure Url is not displayed on frontend.'); }
/** * Assert that customer name is present in search results * * @param Dashboard $dashboard * @param GlobalSearch $search * @return void */ public function processAssert(Dashboard $dashboard, GlobalSearch $search) { $customer = $search->getDataFieldConfig('query')['source']->getEntity(); $customerName = $customer->getFirstname() . " " . $customer->getLastname(); $isVisibleInResult = $dashboard->getAdminPanelHeader()->isSearchResultVisible($customerName); \PHPUnit_Framework_Assert::assertTrue($isVisibleInResult, 'Customer name ' . $customerName . ' is absent in search results'); }
/** * Run step flow. * * @return void */ public function run() { $this->adminAuth->open(); if ($this->dashboard->getAdminPanelHeader()->isVisible()) { $this->dashboard->getAdminPanelHeader()->logOut(); } }
/** * Assert that product name is present in search results * * @param Dashboard $dashboard * @param GlobalSearch $search * @return void */ public function processAssert(Dashboard $dashboard, GlobalSearch $search) { $entity = $search->getDataFieldConfig('query')['source']->getEntity(); $product = $entity instanceof OrderInjectable ? $entity->getEntityId()['products'][0] : $entity; $productName = $product->getName(); $isVisibleInResult = $dashboard->getAdminPanelHeader()->isSearchResultVisible($productName); \PHPUnit_Framework_Assert::assertTrue($isVisibleInResult, 'Product name ' . $productName . ' is absent in search results'); }
/** * Asserts that user has only Sales-related permissions * * @param Dashboard $dashboard * @param UserIndex $userIndex * @return void */ public function processAssert(Dashboard $dashboard, UserIndex $userIndex) { $menuItems = $dashboard->getMenuBlock()->getTopMenuItems(); $userIndex->open(); $deniedMessage = $userIndex->getAccessDeniedBlock()->getTextFromAccessDeniedBlock(); $isMenuItemSingle = count($menuItems) == 1; $hasSales = in_array(self::ROLE_RESOURCE, $menuItems); \PHPUnit_Framework_Assert::assertTrue($hasSales && $isMenuItemSingle && self::DENIED_ACCESS == $deniedMessage, 'Sales item is absent in Menu block or possible access to another page, not related to Sales.'); }
/** * Asserts that user has only related permissions. * * @param BrowserInterface $browser * @param Dashboard $dashboard * @param User $user * @param array $restrictedAccess * @param string $denyUrl * @return void */ public function processAssert(BrowserInterface $browser, Dashboard $dashboard, User $user, array $restrictedAccess, $denyUrl) { $this->objectManager->create('Magento\\User\\Test\\TestStep\\LoginUserOnBackendStep', ['user' => $user])->run(); $menuItems = $dashboard->getMenuBlock()->getTopMenuItems(); \PHPUnit_Framework_Assert::assertEquals($menuItems, $restrictedAccess, 'Wrong display menu.'); $browser->open($_ENV['app_backend_url'] . $denyUrl); $deniedMessage = $dashboard->getAccessDeniedBlock()->getTextFromAccessDeniedBlock(); \PHPUnit_Framework_Assert::assertEquals(self::DENIED_ACCESS, $deniedMessage, 'Possible access to denied page.'); }
/** * Verify whether customer has logged in to the Backend * * @param User $user * @param AdminAuthLogin $adminAuth * @param Dashboard $dashboard * @param User $customAdmin * @internal param null|string $userToLoginInAssert * @return void */ public function processAssert(User $user, AdminAuthLogin $adminAuth, Dashboard $dashboard, User $customAdmin = null) { $adminUser = $customAdmin === null ? $user : $customAdmin; if ($dashboard->getAdminPanelHeader()->isVisible()) { $dashboard->getAdminPanelHeader()->logOut(); } $adminAuth->getLoginBlock()->fill($adminUser); $adminAuth->getLoginBlock()->submit(); \PHPUnit_Framework_Assert::assertTrue($dashboard->getAdminPanelHeader()->isLoggedIn(), 'Admin user was not logged in.'); }
/** * Assert that order Id is present in search results * * @param Dashboard $dashboard * @param GlobalSearch $search * @param OrderIndex $orderIndex * @return void */ public function processAssert(Dashboard $dashboard, GlobalSearch $search, OrderIndex $orderIndex) { $order = $search->getDataFieldConfig('query')['source']->getEntity(); $orderId = "Order #" . $order->getId(); $isVisibleInResult = $dashboard->getAdminPanelHeader()->isSearchResultVisible($orderId); \PHPUnit_Framework_Assert::assertTrue($isVisibleInResult, 'Order Id ' . $order->getId() . ' is absent in search results'); $dashboard->getAdminPanelHeader()->navigateToGrid("Orders"); $isOrderGridVisible = $orderIndex->getSalesOrderGrid()->isVisible(); \PHPUnit_Framework_Assert::assertTrue($isOrderGridVisible, 'Order grid is not visible'); \PHPUnit_Framework_Assert::assertContains((string) $order->getId(), $orderIndex->getSalesOrderGrid()->getAllIds(), 'Order grid does not have ' . $order->getId() . ' in search results'); }
/** * Run step flow. * * @return void */ public function run() { $this->adminAuth->open(); if (!$this->adminAuth->getLoginBlock()->isVisible()) { $this->logoutUserOnBackendStep->run(); } $this->adminAuth->getLoginBlock()->fill($this->user); $this->adminAuth->getLoginBlock()->submit(); $this->adminAuth->getLoginBlock()->waitFormNotVisible(); $this->dashboard->getSystemMessageDialog()->closePopup(); }
/** * Assert that ordered products in bestsellers on Dashboard successfully refreshed. * * @param OrderInjectable $order * @param Dashboard $dashboard * @return void */ public function processAssert(OrderInjectable $order, Dashboard $dashboard) { $dashboard->open(); $dashboard->getStoreStatsBlock()->refreshData(); /** @var \Magento\Backend\Test\Block\Dashboard\Tab\Products\Ordered $bestsellersGrid */ $bestsellersGrid = $dashboard->getStoreStatsBlock()->getTabElement('bestsellers')->getBestsellersGrid(); $products = $order->getEntityId()['products']; foreach ($products as $product) { \PHPUnit_Framework_Assert::assertTrue($bestsellersGrid->isProductVisible($product), 'Bestseller ' . $product->getName() . ' is not present in report grid after refresh data.'); } }
/** * Assert that customer name is present in search results * * @param Dashboard $dashboard * @param GlobalSearch $search * @param CustomerIndex $customerIndex * @return void */ public function processAssert(Dashboard $dashboard, GlobalSearch $search, CustomerIndex $customerIndex) { $customer = $search->getDataFieldConfig('query')['source']->getEntity(); $customerName = $customer->getFirstname() . " " . $customer->getLastname(); $isVisibleInResult = $dashboard->getAdminPanelHeader()->isSearchResultVisible($customerName); \PHPUnit_Framework_Assert::assertTrue($isVisibleInResult, 'Customer name ' . $customerName . ' is absent in search results'); $dashboard->getAdminPanelHeader()->navigateToGrid("Customers"); $isCustomerGridVisible = $customerIndex->getCustomerGridBlock()->isVisible(); \PHPUnit_Framework_Assert::assertTrue($isCustomerGridVisible, 'Customer grid is not visible'); \PHPUnit_Framework_Assert::assertContains((string) $customer->getId(), $customerIndex->getCustomerGridBlock()->getAllIds(), 'Customer grid does not have ' . $customerName . ' in search results'); }
/** * @param FixtureFactory $fixtureFactory * @param AssertSuccessfulReadinessCheck $assertReadiness * @param AssertVersionAndEditionCheck $assertVersionAndEdition * @param AssertSuccessMessage $assertSuccessMessage * @param AssertApplicationVersion $assertApplicationVersion * @param array $upgrade * @return void */ public function test(FixtureFactory $fixtureFactory, AssertSuccessfulReadinessCheck $assertReadiness, AssertVersionAndEditionCheck $assertVersionAndEdition, AssertSuccessMessage $assertSuccessMessage, AssertApplicationVersion $assertApplicationVersion, $upgrade = []) { // Create fixture $upgradeFixture = $fixtureFactory->create('Magento\\Upgrade\\Test\\Fixture\\Upgrade', ['data' => $upgrade]); $createBackupConfig = array_intersect_key($upgrade, ['optionsCode' => '', 'optionsMedia' => '', 'optionsDb' => '']); $createBackupFixture = $fixtureFactory->create('Magento\\Upgrade\\Test\\Fixture\\Upgrade', ['data' => $createBackupConfig]); $version = $upgrade['upgradeVersion']; $suffix = "( (CE|EE))\$"; $normalVersion = '(0|[1-9]\\d*)'; $preReleaseVersion = "((0(?!\\d+(\\.|\\+|{$suffix}))|[1-9A-Za-z])[0-9A-Za-z-]*)"; $buildVersion = '([0-9A-Za-z][0-9A-Za-z-]*)'; $versionPattern = "/^{$normalVersion}(\\.{$normalVersion}){2}" . "(-{$preReleaseVersion}(\\.{$preReleaseVersion})*)?" . "(\\+{$buildVersion}(\\.{$buildVersion})*)?{$suffix}/"; if (preg_match($versionPattern, $version)) { preg_match("/(.*){$suffix}/", $version, $matches); $version = $matches[1]; } else { $this->fail("Provided version format does not comply with semantic versioning specification. Got '{$version}'"); } // Authenticate in admin area $this->adminDashboard->open(); // Open Web Setup Wizard $this->setupWizard->open(); // Authenticate on repo.magento.com if ($upgrade['needAuthentication'] === 'Yes') { $this->setupWizard->getSystemConfig()->clickSystemConfig(); $this->setupWizard->getAuthentication()->fill($upgradeFixture); $this->setupWizard->getAuthentication()->clickSaveConfig(); $this->setupWizard->open(); } // Select upgrade to version $this->setupWizard->getSystemUpgradeHome()->clickSystemUpgrade(); $this->setupWizard->getSelectVersion()->fill($upgradeFixture); if ($upgrade['otherComponents'] === 'Yes') { $this->setupWizard->getSelectVersion()->chooseUpgradeOtherComponents(); } $this->setupWizard->getSelectVersion()->clickNext(); // Readiness Check $this->setupWizard->getReadiness()->clickReadinessCheck(); $assertReadiness->processAssert($this->setupWizard); $this->setupWizard->getReadiness()->clickNext(); // Create Backup page $this->setupWizard->getCreateBackup()->fill($createBackupFixture); $this->setupWizard->getCreateBackup()->clickNext(); // Check info and press 'Upgrade' button $assertVersionAndEdition->processAssert($this->setupWizard, $upgrade['package'], $version); $this->setupWizard->getSystemUpgrade()->clickSystemUpgrade(); $assertSuccessMessage->processAssert($this->setupWizard, $upgrade['package']); // Check application version $this->adminDashboard->open(); $assertApplicationVersion->processAssert($this->adminDashboard, $version); }
/** * @param FixtureFactory $fixtureFactory * @param AssertSuccessfulReadinessCheck $assertReadiness * @param AssertVersionAndEditionCheck $assertVersionAndEdition * @param AssertSuccessMessage $assertSuccessMessage * @param AssertApplicationVersion $assertApplicationVersion * @param array $upgrade * @return void */ public function test(FixtureFactory $fixtureFactory, AssertSuccessfulReadinessCheck $assertReadiness, AssertVersionAndEditionCheck $assertVersionAndEdition, AssertSuccessMessage $assertSuccessMessage, AssertApplicationVersion $assertApplicationVersion, $upgrade = []) { // Create fixture $upgradeFixture = $fixtureFactory->create('Magento\\Upgrade\\Test\\Fixture\\Upgrade', ['data' => $upgrade]); $createBackupConfig = array_intersect_key($upgrade, ['optionsCode' => '', 'optionsMedia' => '', 'optionsDb' => '']); $createBackupFixture = $fixtureFactory->create('Magento\\Upgrade\\Test\\Fixture\\Upgrade', ['data' => $createBackupConfig]); $version = $upgrade['upgradeVersion']; if (preg_match('/^[0-9].[0-9].[0-9]/', $version, $out)) { $version = array_shift($out); } // Authenticate in admin area $this->adminDashboard->open(); // Open Web Setup Wizard $this->setupWizard->open(); // Authenticate on repo.magento.com if ($upgrade['needAuthentication'] === 'Yes') { $this->setupWizard->getSystemConfig()->clickSystemConfig(); $this->setupWizard->getAuthentication()->fill($upgradeFixture); $this->setupWizard->getAuthentication()->clickSaveConfig(); $this->setupWizard->open(); } // Select upgrade to version $this->setupWizard->getSystemUpgradeHome()->clickSystemUpgrade(); $this->setupWizard->getSelectVersion()->fill($upgradeFixture); $this->setupWizard->getSelectVersion()->clickNext(); // Readiness Check $this->setupWizard->getReadiness()->clickReadinessCheck(); $assertReadiness->processAssert($this->setupWizard); $this->setupWizard->getReadiness()->clickNext(); // Create Backup page $this->setupWizard->getCreateBackup()->fill($createBackupFixture); $this->setupWizard->getCreateBackup()->clickNext(); // Check info and press 'Upgrade' button $assertVersionAndEdition->processAssert($this->setupWizard, $upgrade['package'], $version); $this->setupWizard->getSystemUpgrade()->clickSystemUpgrade(); $assertSuccessMessage->processAssert($this->setupWizard, $upgrade['package']); // Check application version $this->adminDashboard->open(); $assertApplicationVersion->processAssert($this->adminDashboard, $version); }
/** * @param Role $role * @param Role $updatedRole * @param User $user * @return void */ public function testLoginAfterChangingPermissions(Role $role, Role $updatedRole, User $user) { /** Create role and a new user with this role */ $role->persist(); /** @var User $user */ $user = $this->fixtureFactory->create('Magento\\User\\Test\\Fixture\\User', ['data' => array_merge($user->getData(), ['role_id' => ['role' => $role]])]); $user->persist(); /** Change the scope of resources available for the role created earlier */ $filter = ['rolename' => $role->getRoleName()]; $this->userRoleIndex->open(); $this->userRoleIndex->getRoleGrid()->searchAndOpen($filter); $this->userRoleEditRole->getRoleFormTabs()->fill($updatedRole); $this->userRoleEditRole->getPageActions()->save(); $this->dashboard->getAdminPanelHeader()->logOut(); }
/** * Logout Admin User from account * * @return void */ public function tearDown() { $this->dashboard->getAdminPanelHeader()->logOut(); }
/** * Run menu navigation test. * * @param Dashboard $dashboard * @param string $menuItem * @return void */ public function test(Dashboard $dashboard, $menuItem) { $dashboard->open(); $dashboard->getMenuBlock()->navigate($menuItem); }
/** * Verify whether customer has logged in to the Backend. * * @param User $user * @param Dashboard $dashboard * @return void */ public function processAssert(User $user, Dashboard $dashboard) { $this->objectManager->create('Magento\\User\\Test\\TestStep\\LoginUserOnBackendStep', ['user' => $user])->run(); \PHPUnit_Framework_Assert::assertTrue($dashboard->getAdminPanelHeader()->isLoggedIn(), 'Admin user was not logged in.'); }
/** * Assert upgrade is successfully * * @param Dashboard $dashboard * @param string $version * @return void */ public function processAssert(Dashboard $dashboard, $version) { \PHPUnit_Framework_Assert::assertContains($version, $dashboard->getApplicationVersion()->getVersion(), 'Application version is incorrect.'); }
/** * Logout Admin User from account. * * @return void */ public function tearDown() { if ($this->dashboard->getAdminPanelHeader()->isVisible()) { $this->dashboard->getAdminPanelHeader()->logOut(); } }
/** * Run Global Search Entity Test. * * @param GlobalSearch $search * @return void */ public function test(GlobalSearch $search) { // Steps: $this->dashboard->open(); $this->dashboard->getAdminPanelHeader()->search($search->getQuery()); }
/** * Run step flow. * * @return void */ public function run() { $this->adminAuth->open(); $this->dashboard->getSystemMessageDialog()->closePopup(); $this->dashboard->getAdminPanelHeader()->logOut(); }
/** * Assert that search result contains expected text * * @param Dashboard $dashboard * @return void */ public function processAssert(Dashboard $dashboard) { $isVisibleInResult = $dashboard->getAdminPanelHeader()->isSearchResultVisible(self::EXPECTED_RESULT); \PHPUnit_Framework_Assert::assertTrue($isVisibleInResult, 'Expected text ' . self::EXPECTED_RESULT . ' is absent in search results'); }
/** * Asserts that 'You have logged out.' message is present on page * * @param AdminAuthLogin $adminAuth * @param Dashboard $dashboard * @return void */ public function processAssert(AdminAuthLogin $adminAuth, Dashboard $dashboard) { $dashboard->getAdminPanelHeader()->logOut(); $isLoginBlockVisible = $adminAuth->getLoginBlock()->isVisible(); \PHPUnit_Framework_Assert::assertTrue($isLoginBlockVisible, 'Admin user was not logged out.'); }
/** * Assert value of item in admin search preview * * @param Dashboard $dashboard * @param GlobalSearch $search * @param string $type */ private function adminSearchAssert($dashboard, $search, $type) { $adminSearchPreview = '"' . $search->getQuery() . '" in ' . $type; $isVisibleInResult = $dashboard->getAdminPanelHeader()->isAdminSearchPreviewVisible($adminSearchPreview, $type); \PHPUnit_Framework_Assert::assertTrue($isVisibleInResult, 'Search Preview for ' . $type . ' is not in search results'); }
/** * Assert that selected currency symbol displays on dashboard. * * @param string $currencySymbol * @param Dashboard $dashboardPage * @return void */ public function processAssert($currencySymbol, Dashboard $dashboardPage) { \PHPUnit_Framework_Assert::assertTrue(strpos($dashboardPage->getMainBlock()->getRevenuePrice(), $currencySymbol) !== false, 'Selected currency symbol not displays on dashboard.'); }
/** * Assert that backend page has correct title and 404 Error is absent on the page. * * @param Dashboard $dashboard * @param string $pageTitle * @return void */ public function processAssert(Dashboard $dashboard, $pageTitle) { \PHPUnit_Framework_Assert::assertEquals($pageTitle, $dashboard->getTitleBlock()->getTitle(), 'Invalid page title is displayed.'); \PHPUnit_Framework_Assert::assertNotContains(self::ERROR_TEXT, $dashboard->getErrorBlock()->getContent(), "404 Error is displayed on '{$pageTitle}' page."); }