| 1 | <?php |
| 2 | /* |
| 3 | +--------------------------------------------------------------------+ |
| 4 | | CiviCRM version 4.7 | |
| 5 | +--------------------------------------------------------------------+ |
| 6 | | Copyright CiviCRM LLC (c) 2004-2015 | |
| 7 | +--------------------------------------------------------------------+ |
| 8 | | This file is a part of CiviCRM. | |
| 9 | | | |
| 10 | | CiviCRM is free software; you can copy, modify, and distribute it | |
| 11 | | under the terms of the GNU Affero General Public License | |
| 12 | | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | |
| 13 | | | |
| 14 | | CiviCRM is distributed in the hope that it will be useful, but | |
| 15 | | WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
| 17 | | See the GNU Affero General Public License for more details. | |
| 18 | | | |
| 19 | | You should have received a copy of the GNU Affero General Public | |
| 20 | | License along with this program; if not, contact CiviCRM LLC | |
| 21 | | at info[AT]civicrm[DOT]org. If you have questions about the | |
| 22 | | GNU Affero General Public License or the licensing of CiviCRM, | |
| 23 | | see the CiviCRM license FAQ at http://civicrm.org/licensing | |
| 24 | +--------------------------------------------------------------------+ |
| 25 | */ |
| 26 | |
| 27 | require_once 'CiviTest/CiviSeleniumTestCase.php'; |
| 28 | |
| 29 | /** |
| 30 | * Class WebTest_Contribute_ContributionPageAddTest |
| 31 | */ |
| 32 | class WebTest_Contribute_ContributionPageAddTest extends CiviSeleniumTestCase { |
| 33 | public function testContributionPageAdd() { |
| 34 | // open browser, login |
| 35 | $this->webtestLogin(); |
| 36 | |
| 37 | // a random 7-char string and an even number to make this pass unique |
| 38 | $hash = substr(sha1(rand()), 0, 7); |
| 39 | $rand = 2 * rand(2, 50); |
| 40 | $pageTitle = 'Donate Online ' . $hash; |
| 41 | // create contribution page with randomized title and default params |
| 42 | $pageId = $this->webtestAddContributionPage($hash, $rand, $pageTitle, array('Test Processor' => 'Dummy'), TRUE, TRUE, 'required'); |
| 43 | |
| 44 | $this->openCiviPage("admin/contribute", "reset=1"); |
| 45 | |
| 46 | // search for the new contrib page and go to its test version |
| 47 | $this->type('title', $pageTitle); |
| 48 | $this->click('_qf_SearchContribution_refresh'); |
| 49 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 50 | |
| 51 | // select testdrive mode |
| 52 | $this->isTextPresent($pageTitle); |
| 53 | $this->openCiviPage("contribute/transact", "reset=1&action=preview&id=$pageId", '_qf_Main_upload-bottom'); |
| 54 | |
| 55 | // verify whatever’s possible to verify |
| 56 | // FIXME: ideally should be expanded |
| 57 | $texts = array( |
| 58 | "Title - New Membership $hash", |
| 59 | "This is introductory message for $pageTitle", |
| 60 | 'Student - $ 50.00', |
| 61 | "Label $hash - $ $rand.00", |
| 62 | "Pay later label $hash", |
| 63 | 'Organization Details', |
| 64 | 'Other Amount', |
| 65 | 'I pledge to contribute this amount every', |
| 66 | 'Name and Address', |
| 67 | 'Summary Overlay', |
| 68 | ); |
| 69 | foreach ($texts as $text) { |
| 70 | $this->assertTrue($this->isTextPresent($text), 'Missing text: ' . $text); |
| 71 | $this->waitForAjaxContent(); |
| 72 | } |
| 73 | |
| 74 | // Disable and re-enable Other Amounts (verify fix for CRM-15021) |
| 75 | $this->openCiviPage("admin/contribute/amount", "reset=1&action=update&id=$pageId", '_qf_Amount_next-bottom'); |
| 76 | $this->click("is_allow_other_amount"); |
| 77 | $this->clickLink("_qf_Amount_upload_done-bottom"); |
| 78 | $this->openCiviPage("contribute/transact", "reset=1&action=preview&id=$pageId", '_qf_Main_upload-bottom'); |
| 79 | $this->assertFalse($this->isTextPresent('Other Amount'), 'Other Amount present but not expected.'); |
| 80 | $this->openCiviPage("admin/contribute/amount", "reset=1&action=update&id=$pageId", '_qf_Amount_next-bottom'); |
| 81 | $this->click("is_allow_other_amount"); |
| 82 | $this->clickLink("_qf_Amount_upload_done-bottom"); |
| 83 | $this->openCiviPage("contribute/transact", "reset=1&action=preview&id=$pageId", '_qf_Main_upload-bottom'); |
| 84 | $this->assertTrue($this->isTextPresent('Other Amount'), 'Other Amount not present but expected.'); |
| 85 | $this->isElementPresent("xpath=//div[@class='content other_amount-content']/input"); |
| 86 | } |
| 87 | |
| 88 | /** |
| 89 | * CRM-12510 Test copy contribution page |
| 90 | */ |
| 91 | public function testContributionPageCopy() { |
| 92 | // open browser, login |
| 93 | $this->webtestLogin(); |
| 94 | |
| 95 | // a random 7-char string and an even number to make this pass unique |
| 96 | $hash = substr(sha1(rand()), 0, 7); |
| 97 | $rand = 2 * rand(2, 50); |
| 98 | $pageTitle = 'Donate Online ' . $hash; |
| 99 | // create contribution page with randomized title and default params |
| 100 | $pageId = $this->webtestAddContributionPage($hash, $rand, $pageTitle, array('Test Processor' => 'Dummy'), TRUE, TRUE, 'required'); |
| 101 | |
| 102 | $this->openCiviPage("admin/contribute", "reset=1"); |
| 103 | |
| 104 | // search for the new contrib page and go to its test version |
| 105 | $this->type('title', $pageTitle); |
| 106 | $this->click('_qf_SearchContribution_refresh'); |
| 107 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 108 | |
| 109 | $this->isTextPresent($pageTitle); |
| 110 | |
| 111 | // Call URL to make a copy of the page |
| 112 | $this->openCiviPage("admin/contribute", "action=copy&gid=$pageId"); |
| 113 | |
| 114 | // search for the new copy page and go to its test version |
| 115 | $this->type('title', 'Copy of ' . $pageTitle); |
| 116 | $this->click('_qf_SearchContribution_refresh'); |
| 117 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 118 | |
| 119 | $this->isTextPresent('Copy of ' . $pageTitle); |
| 120 | // get page id of the copy |
| 121 | // $copyPageId = $this->getText("xpath=//div[@id='configure_contribution_page']/tr[@id='row_4']/td[2]"); |
| 122 | $copyPageId = $this->getText("xpath=//div[@id='option11_wrapper']/table[@id='option11']/tbody/tr[1]/td[2]"); |
| 123 | // select testdrive mode |
| 124 | $this->openCiviPage("contribute/transact", "reset=1&action=preview&id=$copyPageId", '_qf_Main_upload-bottom'); |
| 125 | |
| 126 | // verify whatever’s possible to verify |
| 127 | // FIXME: ideally should be expanded |
| 128 | $texts = array( |
| 129 | "Title - New Membership $hash", |
| 130 | "This is introductory message for $pageTitle", |
| 131 | 'Student - $ 50.00', |
| 132 | "Label $hash - $ $rand.00", |
| 133 | "Pay later label $hash", |
| 134 | 'Organization Details', |
| 135 | 'Other Amount', |
| 136 | 'I pledge to contribute this amount every', |
| 137 | 'Name and Address', |
| 138 | 'Summary Overlay', |
| 139 | ); |
| 140 | foreach ($texts as $text) { |
| 141 | $this->assertTrue($this->isTextPresent($text), 'Missing text: ' . $text); |
| 142 | $this->waitForAjaxContent(); |
| 143 | } |
| 144 | } |
| 145 | |
| 146 | /** |
| 147 | * Check CRM-7943 |
| 148 | */ |
| 149 | public function testContributionPageSeparatePayment() { |
| 150 | // open browser, login |
| 151 | $this->webtestLogin(); |
| 152 | |
| 153 | // a random 7-char string and an even number to make this pass unique |
| 154 | $hash = substr(sha1(rand()), 0, 7); |
| 155 | $rand = 2 * rand(2, 50); |
| 156 | $pageTitle = 'Donate Online ' . $hash; |
| 157 | |
| 158 | // create contribution page with randomized title, default params and separate payment for Membership and Contribution |
| 159 | $pageId = $this->webtestAddContributionPage($hash, $rand, $pageTitle, array('Test Processor' => 'Dummy'), |
| 160 | TRUE, TRUE, 'required', TRUE, FALSE, TRUE, NULL, TRUE, |
| 161 | 1, 7, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE |
| 162 | ); |
| 163 | |
| 164 | $this->openCiviPage("admin/contribute", "reset=1"); |
| 165 | |
| 166 | // search for the new contrib page and go to its test version |
| 167 | $this->type('title', $pageTitle); |
| 168 | $this->click('_qf_SearchContribution_refresh'); |
| 169 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 170 | |
| 171 | // select testdrive mode |
| 172 | $this->isTextPresent($pageTitle); |
| 173 | $this->openCiviPage("contribute/transact", "reset=1&action=preview&id=$pageId", '_qf_Main_upload-bottom'); |
| 174 | |
| 175 | $texts = array( |
| 176 | "Title - New Membership $hash", |
| 177 | "This is introductory message for $pageTitle", |
| 178 | "Label $hash - $ $rand.00", |
| 179 | "Pay later label $hash", |
| 180 | 'Organization Details', |
| 181 | 'Other Amount', |
| 182 | 'I pledge to contribute this amount every', |
| 183 | 'Name and Address', |
| 184 | 'Summary Overlay', |
| 185 | ); |
| 186 | foreach ($texts as $text) { |
| 187 | $this->assertTrue($this->isTextPresent($text), 'Missing text: ' . $text); |
| 188 | $this->waitForAjaxContent(); |
| 189 | } |
| 190 | } |
| 191 | |
| 192 | /** |
| 193 | * Check CRM-7949 |
| 194 | */ |
| 195 | public function testContributionPageSeparatePaymentPayLater() { |
| 196 | // open browser, login |
| 197 | $this->webtestLogin(); |
| 198 | |
| 199 | // a random 7-char string and an even number to make this pass unique |
| 200 | $hash = substr(sha1(rand()), 0, 7); |
| 201 | $rand = 2 * rand(2, 50); |
| 202 | $pageTitle = 'Donate Online ' . $hash; |
| 203 | |
| 204 | // create contribution page with randomized title, default params and separate payment for Membership and Contribution |
| 205 | $pageId = $this->webtestAddContributionPage($hash, $rand, $pageTitle, NULL, |
| 206 | TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, NULL, FALSE, |
| 207 | 1, 0, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE |
| 208 | ); |
| 209 | |
| 210 | $this->openCiviPage("admin/contribute", "reset=1"); |
| 211 | |
| 212 | // search for the new contrib page and go to its test version |
| 213 | $this->type('title', $pageTitle); |
| 214 | $this->click('_qf_SearchContribution_refresh'); |
| 215 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 216 | |
| 217 | //logout |
| 218 | $this->webtestLogout(); |
| 219 | |
| 220 | //Open Live Contribution Page |
| 221 | $this->openCiviPage('contribute/transact', "reset=1&id=$pageId", '_qf_Main_upload-bottom'); |
| 222 | |
| 223 | $firstName = 'Ya' . substr(sha1(rand()), 0, 4); |
| 224 | $lastName = 'Cha' . substr(sha1(rand()), 0, 7); |
| 225 | |
| 226 | $this->type('email-5', $firstName . '@example.com'); |
| 227 | $this->type('first_name', $firstName); |
| 228 | $this->type('last_name', $lastName); |
| 229 | |
| 230 | $this->select('state_province-1', "value=1002"); |
| 231 | $this->clickLink('_qf_Main_upload-bottom', '_qf_Confirm_next-bottom'); |
| 232 | |
| 233 | $this->click('_qf_Confirm_next-bottom'); |
| 234 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 235 | |
| 236 | //login to check contribution |
| 237 | $this->webtestLogin(); |
| 238 | |
| 239 | //Find Contribution |
| 240 | $this->openCiviPage("contribute/search", "reset=1", 'contribution_date_low'); |
| 241 | |
| 242 | $this->type('sort_name', "$lastName $firstName"); |
| 243 | $this->select('financial_type_id', "label=Member Dues"); |
| 244 | $this->clickLink('_qf_Search_refresh', "xpath=//div[@id='contributionSearch']//table//tbody/tr[1]/td[11]/span/a[text()='View']"); |
| 245 | $this->clickLink("xpath=//div[@id='contributionSearch']//table//tbody/tr[1]/td[11]/span/a[text()='View']", '_qf_ContributionView_cancel-bottom', FALSE); |
| 246 | $expected = array( |
| 247 | 'From' => "{$firstName} {$lastName}", |
| 248 | 'Financial Type' => 'Member Dues', |
| 249 | 'Total Amount' => '$ 50.00', |
| 250 | 'Contribution Status' => 'Pending : Pay Later', |
| 251 | ); |
| 252 | $this->webtestVerifyTabularData($expected); |
| 253 | $this->click('_qf_ContributionView_cancel-bottom'); |
| 254 | |
| 255 | //View Contribution for separate contribution |
| 256 | $this->waitForElementPresent("xpath=//div[@id='contributionSearch']//table//tbody/tr[1]/td[11]/span/a[text()='View']"); |
| 257 | // Open search criteria again |
| 258 | $this->click("xpath=id('Search')/div[2]/div/div[1]"); |
| 259 | $this->waitForElementPresent("financial_type_id"); |
| 260 | $this->type("sort_name", $firstName); |
| 261 | $this->select('financial_type_id', "label=Donation"); |
| 262 | $this->clickLink('_qf_Search_refresh', "xpath=//div[@id='contributionSearch']//table//tbody/tr[1]/td[11]/span/a[text()='View']"); |
| 263 | |
| 264 | $this->clickLink("xpath=//div[@id='contributionSearch']//table//tbody/tr[1]/td[11]/span/a[text()='View']", '_qf_ContributionView_cancel-bottom', FALSE); |
| 265 | $expected = array( |
| 266 | 'From' => "{$firstName} {$lastName}", |
| 267 | 'Financial Type' => 'Donation', |
| 268 | 'Contribution Status' => 'Pending : Pay Later', |
| 269 | ); |
| 270 | $this->webtestVerifyTabularData($expected); |
| 271 | $this->click('_qf_ContributionView_cancel-bottom'); |
| 272 | |
| 273 | //Find Member |
| 274 | $this->openCiviPage("member/search", "reset=1", 'member_source'); |
| 275 | $this->type('sort_name', "$lastName $firstName"); |
| 276 | $this->clickLink('_qf_Search_refresh', "xpath=//div[@id='memberSearch']//table//tbody/tr[1]/td[11]/span/a[text()='View']", FALSE); |
| 277 | $this->clickLink("xpath=//div[@id='memberSearch']//table//tbody/tr[1]/td[11]/span/a[text()='View']", '_qf_MembershipView_cancel-bottom', FALSE); |
| 278 | |
| 279 | //View Membership Record |
| 280 | $expected = array( |
| 281 | 'Member' => "{$firstName} {$lastName}", |
| 282 | 'Membership Type' => 'Student', |
| 283 | 'Status' => 'Pending', |
| 284 | ); |
| 285 | $this->webtestVerifyTabularData($expected); |
| 286 | $this->click('_qf_MembershipView_cancel-bottom'); |
| 287 | } |
| 288 | |
| 289 | /** |
| 290 | * CRM-12994 |
| 291 | */ |
| 292 | public function testContributionPageAddPremiumRequiredField() { |
| 293 | // open browser, login |
| 294 | $this->webtestLogin(); |
| 295 | |
| 296 | // a random 7-char string and an even number to make this pass unique |
| 297 | $hash = substr(sha1(rand()), 0, 7); |
| 298 | $rand = 2 * rand(2, 50); |
| 299 | $pageTitle = 'Donate Online ' . $hash; |
| 300 | $processor = array('Test Processor' => 'Dummy'); |
| 301 | |
| 302 | // Create a new payment processor |
| 303 | while (list($processorName, $processorType) = each($processor)) { |
| 304 | $this->webtestAddPaymentProcessor($processorName, $processorType); |
| 305 | } |
| 306 | |
| 307 | // go to the New Contribution Page page |
| 308 | $this->openCiviPage('admin/contribute', 'action=add&reset=1'); |
| 309 | |
| 310 | // fill in Title and Settings |
| 311 | $this->type('title', $pageTitle); |
| 312 | |
| 313 | // to select financial type |
| 314 | $this->select('financial_type_id', "label=Donation"); |
| 315 | |
| 316 | $this->click('is_organization'); |
| 317 | $this->select("xpath=//*[@class='crm-contribution-onbehalf_profile_id']//span[@class='crm-profile-selector-select']//select", 'label=On Behalf Of Organization'); |
| 318 | $this->type('for_organization', "On behalf $hash"); |
| 319 | // make onBehalf optional |
| 320 | $this->click('CIVICRM_QFID_1_2'); |
| 321 | |
| 322 | $this->fillRichTextField('intro_text', 'This is introductory message for ' . $pageTitle, 'CKEditor'); |
| 323 | $this->fillRichTextField('footer_text', 'This is footer message for ' . $pageTitle, 'CKEditor'); |
| 324 | |
| 325 | $this->type('goal_amount', 10 * $rand); |
| 326 | |
| 327 | // Submit form |
| 328 | $this->clickLink('_qf_Settings_next', "_qf_Amount_next-bottom"); |
| 329 | |
| 330 | // Get contribution page id |
| 331 | $pageId = $this->urlArg('id'); |
| 332 | |
| 333 | // fill in Processor, Amounts |
| 334 | if (!empty($processor)) { |
| 335 | reset($processor); |
| 336 | while (list($processorName) = each($processor)) { |
| 337 | // select newly created processor |
| 338 | $xpath = "xpath=//label[text() = '{$processorName}']/preceding-sibling::input[1]"; |
| 339 | $this->assertTrue($this->isTextPresent($processorName)); |
| 340 | $this->check($xpath); |
| 341 | } |
| 342 | } |
| 343 | |
| 344 | // fill in labels & values in Fixed Contribution Options |
| 345 | $this->type('label_1', 'Fixed Amount 1'); |
| 346 | $this->type('value_1', 1); |
| 347 | $this->type('label_2', 'Fixed Amount 2'); |
| 348 | $this->type('value_2', 2); |
| 349 | $this->type('label_3', 'Fixed Amount 3'); |
| 350 | $this->type('value_3', 3); |
| 351 | $this->click('CIVICRM_QFID_1_4'); |
| 352 | $this->click('_qf_Amount_submit_savenext-bottom'); |
| 353 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 354 | |
| 355 | // click through to the membership view screen |
| 356 | $this->click("css=li#tab_thankyou a"); |
| 357 | $this->waitForElementPresent('_qf_ThankYou_next-bottom'); |
| 358 | |
| 359 | // fill in Receipt details |
| 360 | $this->type('thankyou_title', "Thank-you Page Title $hash"); |
| 361 | $this->fillRichTextField('thankyou_text', 'This is thankyou message for ' . $pageTitle, 'CKEditor', TRUE); |
| 362 | $this->fillRichTextField('thankyou_footer', 'This is thankyou footer message for ' . $pageTitle, 'CKEditor', TRUE); |
| 363 | $this->click('is_email_receipt'); |
| 364 | $this->waitForElementPresent('bcc_receipt'); |
| 365 | $this->type('receipt_from_name', "Receipt From Name $hash"); |
| 366 | $this->type('receipt_from_email', "$hash@example.org"); |
| 367 | $this->type('receipt_text', "Receipt Message $hash"); |
| 368 | $this->type('cc_receipt', "$hash@example.net"); |
| 369 | $this->type('bcc_receipt', "$hash@example.com"); |
| 370 | |
| 371 | $this->click('_qf_ThankYou_next'); |
| 372 | $this->waitForElementPresent('_qf_ThankYou_next-bottom'); |
| 373 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 374 | $receiptText = "'ThankYou' information has been saved."; |
| 375 | $this->assertTrue($this->isTextPresent($receiptText), 'Missing text: ' . $receiptText); |
| 376 | |
| 377 | $this->click('link=Premiums'); |
| 378 | $this->waitForElementPresent('_qf_Premium_submit_savenext-bottom'); |
| 379 | $assertPremiumsCheck = FALSE; |
| 380 | if (!$this->isChecked('premiums_active')) { |
| 381 | $assertPremiumsCheck = TRUE; |
| 382 | } |
| 383 | $this->assertTrue($assertPremiumsCheck, 'Premiums Section is not unchecked by default.'); |
| 384 | $this->click('_qf_Premium_submit_savenext-bottom'); |
| 385 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 386 | $premiumText = "'Premium' information has been saved."; |
| 387 | // check if clicking Save & Next button |
| 388 | // Premium is saved rather than required validation error |
| 389 | // for No Thank-you Label textfield |
| 390 | $this->assertTrue($this->isTextPresent($premiumText)); |
| 391 | |
| 392 | $this->openCiviPage("admin/contribute", "reset=1"); |
| 393 | |
| 394 | // search for the new contrib page and go to its test version |
| 395 | $this->type('title', $pageTitle); |
| 396 | $this->click('_qf_SearchContribution_refresh'); |
| 397 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 398 | $this->isElementPresent("xpath=//table[@class='display dataTable no-footer']/tbody/tr/td[1]/strong[text()='$pageTitle']"); |
| 399 | $this->waitForElementPresent("xpath=//table[@class='display dataTable no-footer']/tbody/tr/td[4]/div[@class='crm-contribution-page-configure-actions']/span[text()='Configure']"); |
| 400 | $this->click("xpath=//table[@id='option11']/tbody/tr/td[4]/div[@class='crm-contribution-page-configure-actions']/span[text()='Configure']"); |
| 401 | $this->waitForElementPresent("xpath=//table[@id='option11']/tbody/tr/td[4]/div[@class='crm-contribution-page-configure-actions']/span[text()='Configure']/ul[@class='panel']/li[8]/a[@title='Premiums']"); |
| 402 | $this->click("xpath=//table[@id='option11']/tbody/tr/td[4]/div[@class='crm-contribution-page-configure-actions']/span[text()='Configure']/ul[@class='panel']/li[8]/a[@title='Premiums']"); |
| 403 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 404 | $this->waitForElementPresent('premiums_active'); |
| 405 | $this->waitForElementPresent('_qf_Premium_cancel-bottom'); |
| 406 | |
| 407 | // click on Premiums Section Enabled? checkbox |
| 408 | $this->click('premiums_active'); |
| 409 | $this->waitForElementPresent("xpath=//div[@id='premiumSettings']"); |
| 410 | $this->waitForElementPresent('premiums_nothankyou_position'); |
| 411 | $this->type('premiums_intro_title', 'Premiums Intro Title'); |
| 412 | $this->type('premiums_intro_text', 'Premiums Into Text'); |
| 413 | $this->type('premiums_contact_email', "$hash@example.net"); |
| 414 | |
| 415 | // let No Thank-you Label text be blank |
| 416 | // so that validation error appears |
| 417 | // $this->type('premiums_nothankyou_label', ); |
| 418 | $this->select('premiums_nothankyou_position', 'value=2'); |
| 419 | |
| 420 | // click on save & next button |
| 421 | $this->click('_qf_Premium_submit_savenext-bottom'); |
| 422 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 423 | $premiumRequiredText = "No Thank-you Label is a required field."; |
| 424 | // check if clicking Save & Next button |
| 425 | // required validation error appears |
| 426 | // for No Thank-you Label textfield |
| 427 | $this->waitForElementPresent("xpath=//*[@id='premiumSettings']/div/div[2]/table/tbody/tr[6]/td[2]/span[1]"); |
| 428 | $this->assertTrue($this->isTextPresent($premiumRequiredText)); |
| 429 | |
| 430 | // fill in value for Premiums No Thank-you Label textfield |
| 431 | $this->type('premiums_nothankyou_label', 'Premiums No Thank-you Label'); |
| 432 | $this->waitForElementPresent('_qf_Premium_upload_done-bottom'); |
| 433 | |
| 434 | // click save & done button |
| 435 | $this->click('_qf_Premium_upload_done-bottom'); |
| 436 | $this->waitForPageToLoad($this->getTimeoutMsec()); |
| 437 | $premiumSavedText = "'Premium' information has been saved."; |
| 438 | // check if clicking Save & Done button |
| 439 | // contribution page is saved. |
| 440 | $this->assertTrue($this->isTextPresent($premiumSavedText)); |
| 441 | } |
| 442 | |
| 443 | } |