+--------------------------------------------------------------------+
| CiviCRM version 4.7 |
+--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2015 |
+ | Copyright CiviCRM LLC (c) 2004-2016 |
+--------------------------------------------------------------------+
| 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");
//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);
$streetAddress = "100 Main Street";
$this->_testAddLocation($streetAddress);
$this->_testAddFees(FALSE, FALSE, "Test Processor", FALSE, TRUE);
- $this->_testAddOnlineRegistration($registerIntro, $multipleRegistrations, $allowSelfService);
+ $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->type('first_name', $contact1);
- $this->type('last_name', "Anderson");
- $this->type('email-Primary', "{$contact1}@example.com");
+ $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->openCiviPage("event/search", "reset=1");
$this->waitForElementPresent("_qf_Search_refresh");
$this->type('sort_name', "Anderson, $contact1");
- $this->click("xpath=//div[@id='searchForm']/table/tbody/tr[9]/td[1]/label[text()='Yes']");
$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();
- // Self Service Transfer of event
- $this->openCiviPage("event/selfsvcupdate", "reset=1&pid=$primaryParticipantId");
+ // 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_cancel-bottom");
+ $this->waitForElementPresent("_qf_SelfSvcTransfer_submit-bottom");
$newParticipantFirstName = substr(sha1(rand()), 0, 5);
$newParticipantLastName = "Smith";
$newParticipantEmail = "{$newParticipantFirstName}@example.com";
$this->type('first_name', $newParticipantFirstName);
$this->click("_qf_SelfSvcTransfer_submit-bottom");
- // Cancel registration.
+ // Cancel event registration.
$this->webtestLogin('admin');
$this->openCiviPage("event/search", "reset=1");
$this->type('sort_name', "Smith, $newParticipantFirstName");
- $this->click("xpath=//div[@id='searchForm']/table/tbody/tr[9]/td[1]/label[text()='Yes']");
$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");
+ $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->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()='Yes']");
+ $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 (test)");
- $this->assertElementContainsText("xpath=//div[@id='participantSearch']/table/tbody/tr[@id='rowid$newParticipantId']/td[9]", "Cancelled (test)");
+ $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);
}
}