2 namespace Civi\Codeception
;
5 * Trait CiviAcceptanceTesterTrait
6 * Trait for common functions used for Codeception Testing framework
7 * @package Civi\Codeception
9 trait CiviAcceptanceTesterTrait
{
12 * Parse Parameters, and create generic Civi URL
14 * The path and parameters of a CiviCRM page. Ex: "civicrm/dashboard?reset=1".
16 public function amOnRoute($page) {
17 $params = explode('?', $page);
18 if (empty($params[1])) {
19 $newPage = \CRM_Utils_System
::url($page, NULL, FALSE, NULL, FALSE);
22 $newPage = \CRM_Utils_System
::url($params[0], $params[1], FALSE, NULL, FALSE);
24 return $this->amOnPage($newPage);
28 * Dispatcher for login to supported plattforms
30 * CiviCRM username for the login
32 * CiviCRM password for the login
34 public function login($username, $password) {
35 $config = \CRM_Core_Config
::singleton();
36 $handler = [$this, 'loginTo' . $config->userFramework
];
37 if (is_callable($handler)) {
38 call_user_func($handler, $username, $password);
41 throw new CRM_Core_Exception("Framework {$config->userFramework} is not supported. Implement loginTo{$config->userFramework}.");
48 * CiviCRM username for the login
50 * CiviCRM password for the login
52 public function loginToDrupal($username, $password) {
54 $I->amOnPage('/user');
55 $I->fillField("#edit-name", $username);
56 $I->fillField("#edit-pass", $password);
57 $I->click("#edit-submit");
58 $I->see("CiviCRM Home");
64 * CiviCRM username for the login
66 * CiviCRM password for the login
68 public function loginToJoomla($username, $password) {
69 throw new CRM_Core_Exception("loginToJoomla is not implemented yet. Implement a corresponding login function.");
75 * CiviCRM username for the login
77 * CiviCRM password for the login
79 public function loginToWordpress($username, $password) {
80 throw new CRM_Core_Exception("loginToWordpress is not implemented yet. Implement a corresponding login function.");
86 * CiviCRM username for the login
88 * CiviCRM password for the login
90 public function loginToBackdrop($username, $password) {
91 throw new CRM_Core_Exception("loginToBackdrop is not implemented yet. Implement a corresponding login function.");
97 public function loginAsAdmin() {
99 $this->login($_CV['ADMIN_USER'], $_CV['ADMIN_PASS']);
105 public function loginAsDemo() {
107 $this->login($_CV['DEMO_USER'], $_CV['DEMO_PASS']);