/**
  * Not allowed resources are not available on menu level.
  * In case if type it via URL - "Access Denied" page appeared.
  *
  * @param User $user
  * @param AdminAuthLogin $adminAuthLogin
  * @param Dashboard $dashboard
  * @param Browser $browser
  * @return void
  */
 public function processAssert(User $user, AdminAuthLogin $adminAuthLogin, Dashboard $dashboard, Browser $browser)
 {
     $adminPanelHeader = $dashboard->getAdminPanelHeader();
     if ($adminPanelHeader->isVisible()) {
         $adminPanelHeader->logOut();
     }
     $adminAuthLogin->getLoginBlock()->loginToAdminPanel($user->getData());
     $menuItems = $adminPanelHeader->getMenuFirstLevelItems();
     \PHPUnit_Framework_Assert::assertTrue(count($menuItems) == 1 && in_array('Sales', $menuItems), 'Sales menu item is not visible or count of menu items is greater than 1.');
     $browser->open($_ENV['app_backend_url'] . $this->manageProductsUrl);
     \PHPUnit_Framework_Assert::assertTrue(strpos($dashboard->getMainBlock()->getMainBlockText(), self::ACCESS_DENIED) !== false, self::ACCESS_DENIED . " text is not visible on dashboard page.");
 }
 /**
  * Verify incorrect credentials message while login to admin.
  *
  * @param AdminAuthLogin $adminAuth
  * @param User $customAdmin
  * @return void
  */
 public function processAssert(AdminAuthLogin $adminAuth, User $customAdmin)
 {
     $adminAuth->open();
     $adminAuth->getLoginBlock()->loginToAdminPanel($customAdmin->getData());
     \PHPUnit_Framework_Assert::assertEquals(self::INVALID_CREDENTIALS_MESSAGE, $adminAuth->getMessagesBlock()->getErrorMessages(), 'Message "' . self::INVALID_CREDENTIALS_MESSAGE . '" is not visible.');
 }
 /**
  * Prepare user for test.
  *
  * @param User $user
  * @param Role $role
  * @return User
  */
 protected function prepareUser(User $user, Role $role)
 {
     $userData = $user->getData();
     $userData['role_id'] = ['role' => $role];
     unset($userData['user_id']);
     unset($userData['password_confirmation']);
     return $this->fixtureFactory->createByCode('user', ['data' => $userData]);
 }
 /**
  * Prepare User fixture.
  *
  * @param User $user
  * @param User $adminUser
  * @param null|string $duplicatedParam
  * @param bool $isCustomRole
  * @return User
  */
 protected function prepareUser(User $user, User $adminUser, $duplicatedParam, $isCustomRole)
 {
     if (!empty($duplicatedParam)) {
         $data = $user->getData();
         $data[$duplicatedParam] = $adminUser->getData($duplicatedParam);
         $user = $this->prepareUserFixture($user, $data);
     } elseif ($isCustomRole) {
         $data = $user->getData();
         $user = $this->prepareUserFixture($user, $data);
     }
     return $user;
 }