From d61cd85f873b443f1f222ab3a98fcef8a4ee22bc Mon Sep 17 00:00:00 2001 From: Miguel Date: Mon, 2 May 2016 12:16:57 +0100 Subject: [PATCH] [Behat] Add default User creation and sentence --- Features/Context/Users.php | 65 ++++++++++++++++++++++++++++++++++-- Features/Users/users.feature | 3 +- 2 files changed, 63 insertions(+), 5 deletions(-) diff --git a/Features/Context/Users.php b/Features/Context/Users.php index ec57f4629..d782c0dd6 100644 --- a/Features/Context/Users.php +++ b/Features/Context/Users.php @@ -17,6 +17,9 @@ class Users extends PlatformUI { + const USERGROUP_ROOT_CONTENT_ID = 4; + const DEFAULT_LANGUAGE = 'eng-GB'; + use RepositoryContext; /** @@ -29,6 +32,11 @@ class Users extends PlatformUI */ protected $contentService; + /** + * @var eZ\Publish\API\Repository\Values\User\User + */ + protected $userDefault; + /** * @injectService $repository @ezpublish.api.repository * @injectService $userService @ezpublish.api.service.user @@ -40,6 +48,47 @@ public function __construct(Repository $repository, UserService $userService, Co $this->setRepository($repository); $this->userService = $userService; $this->contentService = $contentService; + $this->userDefault = null; + } + + /** + * Return the default user, if there is none one is created + */ + protected function getDefaultUser() + { + if (!$this->userDefault) { + $username = $password = 'User#' . uniqid(); + $email = $username .'@ez.no'; + $this->userDefault = $this->createUser($username, $email, $password); + } + + return $this->userDefault; + } + + /** + * Create user inside given User Group; + * + * @param $username username of the user to create + * @param $email email address of user to create + * @param $password account password for user to create + * + * @return eZ\Publish\API\Repository\Values\User\User + */ + protected function createUser($username, $email, $password) + { + $repository = $this->getRepository(); + + $userCreateStruct = $this->userService->newUserCreateStruct( + $username, + $email, + $password, + self::DEFAULT_LANGUAGE + ); + $userCreateStruct->setField('first_name', $username); + $userCreateStruct->setField('last_name', $username); + $parentGroup = $this->userService->loadUserGroup(self::USERGROUP_ROOT_CONTENT_ID); + + return $this->userService->createUser($userCreateStruct, array($parentGroup)); } /** @@ -66,10 +115,15 @@ public function iCreateUser(TableNode $users = null) /** * @When I go to (the) User :username page + * @When I go to a valid User page */ - public function goToUserPage($username) + public function goToUserPage($username = null) { - $user = $this->userService->loadUserByLogin($username); + if ($username) { + $user = $this->userService->loadUserByLogin($username); + } else { + $user = $this->getDefaultUser(); + } $userObject = $this->contentService->loadContent($user->getUserId()); $firstName = $userObject->getFieldValue('first_name'); $lastName = $userObject->getFieldValue('last_name'); @@ -85,7 +139,12 @@ public function goToUserPage($username) */ public function editUserUser($username) { - $user = $this->userService->loadUserByLogin($username); + if ($username) { + $user = $this->userService->loadUserByLogin($username); + } else { + $user = $this->getDefaultUser(); + } + $userObject = $this->contentService->loadContent($user->getUserId()); $firstName = $userObject->getFieldValue('first_name'); $lastName = $userObject->getFieldValue('last_name'); diff --git a/Features/Users/users.feature b/Features/Users/users.feature index 05f72209b..9994efb0f 100644 --- a/Features/Users/users.feature +++ b/Features/Users/users.feature @@ -70,7 +70,6 @@ Feature: Use the eZ Users field @javascript @edge Scenario: Validate "Send to trash" button is replaced with "Delete" when browsing users - Given there is a User with name "One" - When I go to User "One" page + When I go to a valid User page Then I should not see a "Send to trash" action bar button And I should see a "Delete" action bar button