+--------------------------------------------------------------------+
| CiviCRM version 4.7 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2015 |
+ | Copyright CiviCRM LLC (c) 2004-2017 |
+--------------------------------------------------------------------+
| This file is a part of CiviCRM. |
| |
// Using helper webtestFillDate function.
$this->webtestFillDateTime("start_date", "+1 week");
$this->webtestFillDateTime("end_date", "+1 week 1 day 8 hours ");
-
+ $this->waitForElementPresent('max_participants');
$this->type("max_participants", "50");
$this->click("is_map");
$this->click("is_public");
* @param $registerIntro
* @param bool $multipleRegistrations
*/
- public function _testAddOnlineRegistration($registerIntro, $multipleRegistrations = FALSE) {
+ public function _testAddOnlineRegistration($registerIntro, $multipleRegistrations = FALSE, $allowSelfService = FALSE) {
// Go to Online Registration tab
$this->click("link=Online Registration");
$this->waitForElementPresent("_qf_Registration_upload-bottom");
$this->assertChecked("is_multiple_registrations");
}
+ //enable 'Allow self-service'
+ if ($allowSelfService) {
+ $isChecked = $this->isChecked('allow_selfcancelxfer');
+ if (!$isChecked) {
+ $this->click("allow_selfcancelxfer");
+ }
+ $this->assertChecked("allow_selfcancelxfer");
+ }
$this->fillRichTextField("intro_text", $registerIntro, 'CKEditor', TRUE);
// enable confirmation email
//Add event
$this->openCiviPage("event/add", "reset=1&action=add");
+ $this->waitForElementPresent("_qf_EventInfo_cancel-bottom");
$eventName = 'My Event - ' . substr(sha1(rand()), 0, 7);
$eventDescription = "Here is a description for this conference.";
$this->_testAddEventInfo($eventName, $eventDescription);
$this->webtestLogout();
}
+ /**
+ * CRM-16761: Self service view, update and cancel for CiviEvent
+ */
+ public function testAllowSelfService() {
+ $this->webtestLogin('admin');
+
+ // Create Individual
+ $contact1 = substr(sha1(rand()), 0, 7);
+ $this->webtestAddContact($contact1, "Anderson", "{$contact1}@example.com");
+
+ // Add event
+ $this->openCiviPage("event/add", "reset=1&action=add");
+ $eventTitle = 'My Conference - ' . substr(sha1(rand()), 0, 7);
+ $eventDescription = "Here is a description for this conference.";
+ $registerIntro = "Fill in all the fields below and click Continue.";
+ $multipleRegistrations = TRUE;
+ $allowSelfService = TRUE;
+ $this->_testAddEventInfo($eventTitle, $eventDescription);
+ $streetAddress = "100 Main Street";
+ $this->_testAddLocation($streetAddress);
+ $this->_testAddFees(FALSE, FALSE, "Test Processor", FALSE, TRUE);
+ $this->_testAddOnlineRegistration($registerIntro, FALSE, $allowSelfService);
+
+ // Register participant
+ $id = $this->urlArg('id');
+ $this->openCiviPage("event/register", "reset=1&id=$id&action=preview", '_qf_Register_upload-bottom');
+ $this->waitForElementPresent("xpath=//div[@id='crm-event-register-different']/a");
+ $this->click("xpath=//div[@id='crm-event-register-different']/a");
+ $this->waitForAjaxcontent();
+ $this->select2("select_contact_id", "$contact1");
+
+ // Fill card details
+ $this->select("credit_card_type", "value=Visa");
+ $this->type("credit_card_number", "4111111111111111");
+ $this->type("cvv2", "000");
+ $this->select("credit_card_exp_date[M]", "value=1");
+ $this->select("credit_card_exp_date[Y]", "value=2020");
+
+ // Add billing Address
+ $this->webtestAddBillingDetails($contact1, NULL, 'Anderson');
+ $this->click("_qf_Register_upload-bottom");
+ $this->waitForPageToLoad($this->getTimeoutMsec());
+ $this->waitForElementPresent("_qf_Confirm_next-top");
+ $this->click("_qf_Confirm_next-top");
+
+ // Find Participant.
+ $this->openCiviPage("event/search", "reset=1");
+ $this->waitForElementPresent("_qf_Search_refresh");
+ $this->type('sort_name', "Anderson, $contact1");
+ $this->click("_qf_Search_refresh");
+ $this->waitForElementPresent("xpath=//div[@id='participantSearch']");
+
+ // Get the id of primary participant
+ $primaryParticipantId = $this->urlArg('id', $this->getAttribute("xpath=//div[@id='participantSearch']/table/tbody/tr/td[3]/a[text()='Anderson, $contact1']/../../td[11]/span/a[1][text()='View']@href"));
+
+ // Get the contact id of primary participant
+ $primaryParticipantContactid = $this->urlArg('cid', $this->getAttribute("xpath=//div[@id='participantSearch']/table/tbody/tr/td[3]/a[text()='Anderson, $contact1']/../../td[11]/span/a[1][text()='View']@href"));
+
+ // Generate checksum for primary participant
+ $checkSum = CRM_Contact_BAO_Contact_Utils::generateChecksum($primaryParticipantContactid);
+ $this->open($this->sboxPath . "admin/people/permissions/roles");
+ $permissions = array(
+ "edit-1-access-civicrm",
+ "edit-1-access-civievent",
+ "edit-1-edit-all-events",
+ );
+ $this->webtestLogout();
+
+ // Transfer event registration.
+ $this->openCiviPage("event/selfsvcupdate", "reset=1&pid=$primaryParticipantId&cs=$checkSum");
+ $this->waitForElementPresent("xpath=//table[@class='crm-selfsvcupdate-form-details']");
+ $this->verifyText("xpath=//table[@class='crm-selfsvcupdate-form-details']/tbody/tr/td[1]", preg_quote("Anderson, $contact1"));
+ $this->verifyText("xpath=//table[@class='crm-selfsvcupdate-form-details']/tbody/tr/td[2]", preg_quote("$eventTitle"));
+ $this->select("action", "value=1");
+ $this->click("_qf_SelfSvcUpdate_submit-bottom");
+ $this->waitForElementPresent("_qf_SelfSvcTransfer_submit-bottom");
+ $newParticipantFirstName = substr(sha1(rand()), 0, 5);
+ $newParticipantLastName = "Smith";
+ $newParticipantEmail = "{$newParticipantFirstName}@example.com";
+ $this->type('email', $newParticipantEmail);
+ $this->type('last_name', $newParticipantLastName);
+ $this->type('first_name', $newParticipantFirstName);
+ $this->click("_qf_SelfSvcTransfer_submit-bottom");
+
+ // Cancel event registration.
+ $this->webtestLogin('admin');
+ $this->openCiviPage("event/search", "reset=1");
+ $this->type('sort_name', "Smith, $newParticipantFirstName");
+ $this->click("_qf_Search_refresh");
+ $this->waitForElementPresent("xpath=//div[@id='participantSearch']/table/tbody/tr/td[3]/a[text()='Smith, $newParticipantFirstName']/../../td[11]/span/a[1][text()='View']");
+
+ // Get the id of new participant
+ $newParticipantId = $this->urlArg('id', $this->getAttribute("xpath=//div[@id='participantSearch']/table/tbody/tr/td[3]/a[text()='Smith, $newParticipantFirstName']/../../td[11]/span/a[1][text()='View']@href"));
+
+ // Get the contact id of new participant
+ $newParticipantContactId = $this->urlArg('cid', $this->getAttribute("xpath=//div[@id='participantSearch']/table/tbody/tr/td[3]/a[text()='Smith, $newParticipantFirstName']/../../td[11]/span/a[1][text()='View']@href"));
+
+ // Generate checksum for new participant
+ $newParticipantcheckSum = CRM_Contact_BAO_Contact_Utils::generateChecksum($newParticipantContactId);
+ $this->webtestLogout();
+ $this->openCiviPage("event/selfsvcupdate", "reset=1&pid=$newParticipantId&cs=$newParticipantcheckSum");
+ $this->verifyText("xpath=//table[@class='crm-selfsvcupdate-form-details']/tbody/tr/td[1]", preg_quote("Smith, $newParticipantFirstName"));
+ $this->verifyText("xpath=//table[@class='crm-selfsvcupdate-form-details']/tbody/tr/td[2]", preg_quote("$eventTitle"));
+ $this->select("action", "value=2");
+ $this->click("_qf_SelfSvcUpdate_submit-bottom");
+
+ // Check the status of participant
+ $this->webtestLogin('admin');
+ $this->openCiviPage("event/search", "reset=1");
+ $this->waitForElementPresent('_qf_Search_refresh');
+ $this->select2("event_id", $eventTitle);
+ $this->click("xpath=//div[@id='searchForm']/table/tbody/tr[9]/td[1]/label[text()='No']");
+ $this->click("_qf_Search_refresh");
+ $this->waitForElementPresent("xpath=//div[@id='participantSearch']/table/tbody");
+ $this->assertElementContainsText("xpath=//div[@id='participantSearch']/table/tbody/tr[@id='rowid$primaryParticipantId']/td[9]", "Transferred");
+ $this->assertElementContainsText("xpath=//div[@id='participantSearch']/table/tbody/tr[@id='rowid$newParticipantId']/td[9]", "Cancelled");
+ }
+
+ /**
+ * CRM-17745: Make maximum number of participants configurable
+ */
+ public function testLimitMaximumParticipants() {
+ $this->webtestLogin('admin');
+
+ // Add event
+ $this->openCiviPage("event/add", "reset=1&action=add");
+ $eventTitle = 'My Conference - ' . substr(sha1(rand()), 0, 7);
+ $eventDescription = "Here is a description for this conference.";
+ $registerIntro = "Fill in all the fields below and click Continue.";
+ $this->_testAddEventInfo($eventTitle, $eventDescription);
+ $multipleRegistrations = TRUE;
+ $this->_testAddOnlineRegistration($registerIntro, $multipleRegistrations);
+ $id = $this->urlArg('id');
+
+ // Limit additional participants
+ $this->openCiviPage("event/manage/registration", "reset=1&action=update&id=$id", '_qf_Registration_upload-bottom');
+ $this->select("max_additional_participants", "value=4");
+ $this->click("_qf_Registration_upload-bottom");
+ $this->waitForText('crm-notification-container', "'Online Registration' information has been saved.");
+
+ // Open registration page and check maximum participants
+ $this->openCiviPage("event/register", "reset=1&id=$id&action=preview", '_qf_Register_upload-bottom');
+ $this->verifyText("xpath=//select[@id='additional_participants']/option[last()]", 5);
+ }
+
}