Merge pull request #2937 from seamuslee001/master
[civicrm-core.git] / tests / phpunit / WebTest / Member / OnlineAutoRenewMembershipGCTest.php
index a59277a10891bb218f937f86acc673c48946b5b0..84ae09746c63de5d6975bfe37a91fb553bd39923 100644 (file)
@@ -1,9 +1,9 @@
 <?php
 /*
  +--------------------------------------------------------------------+
- | CiviCRM version 4.3                                                |
+ | CiviCRM version 4.5                                                |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2013                                |
+ | Copyright CiviCRM LLC (c) 2004-2014                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -24,7 +24,6 @@
  +--------------------------------------------------------------------+
 */
 
-
 require_once 'CiviTest/CiviSeleniumTestCase.php';
 class WebTest_Member_OnlineAutoRenewMembershipGCTest extends CiviSeleniumTestCase {
 
@@ -46,17 +45,19 @@ class WebTest_Member_OnlineAutoRenewMembershipGCTest extends CiviSeleniumTestCas
     $lastName = 'Smith_' . substr(sha1(rand()), 0, 7);
     $this->type('email-5', "{$lastName}@example.com");
 
-    $this->click("_qf_Main_upload-bottom");
-    $this->waitForPageToLoad($this->getTimeoutMsec());
-    $this->waitForElementPresent("_qf_Confirm_next_checkout");
+    $this->clickLink("_qf_Main_upload-bottom", "_qf_Confirm_next_checkout");
 
     $text = 'I want this membership to be renewed automatically every 1 year(s).';
     $this->assertElementContainsText('css=div.display-block', $text, 'Missing text: ' . $text);
 
     $this->click("_qf_Confirm_next_checkout");
+    // Because it tends to cause problems, all uses of sleep() must be justified in comments
+    // Sleep should never be used for wait for anything to load from the server
+    // Justification for this instance: FIXME
     sleep(5);
 
-    // FIXME: By this time pending records has already been created. Formatting for external page (google checkout in this case) 
+    // FIXME: By this time pending records has already been created. Formatting for external page (google checkout in this case)
+
     // has changed a bit. No point in adding test for external page as we 'll test with fake transactions.
   }
 
@@ -64,7 +65,6 @@ class WebTest_Member_OnlineAutoRenewMembershipGCTest extends CiviSeleniumTestCas
     //configure membership signup page.
     $pageId = $this->_configureMembershipPage();
 
-    $this->open($this->sboxPath);
     $this->webtestLogin();
     $this->waitForPageToLoad($this->getTimeoutMsec());
 
@@ -78,17 +78,19 @@ class WebTest_Member_OnlineAutoRenewMembershipGCTest extends CiviSeleniumTestCas
     $lastName = 'Smith_' . substr(sha1(rand()), 0, 7);
     $this->type('email-5', "{$lastName}@example.com");
 
-    $this->click("_qf_Main_upload-bottom");
-    $this->waitForPageToLoad($this->getTimeoutMsec());
-    $this->waitForElementPresent("_qf_Confirm_next_checkout");
+    $this->clickLink("_qf_Main_upload-bottom", "_qf_Confirm_next_checkout");
 
     $text = 'I want this membership to be renewed automatically every 1 year(s).';
     $this->assertElementContainsText('css=div.display-block', $text, 'Missing text: ' . $text);
 
     $this->click("_qf_Confirm_next_checkout");
+    // Because it tends to cause problems, all uses of sleep() must be justified in comments
+    // Sleep should never be used for wait for anything to load from the server
+    // Justification for this instance: FIXME
     sleep(5);
 
-    // FIXME: By this time pending records has already been created. Formatting for external page (google checkout in this case) 
+    // FIXME: By this time pending records has already been created. Formatting for external page (google checkout in this case)
+
     // has changed a bit. No point in adding test for external page as we 'll test with fake transactions.
   }
 
@@ -96,60 +98,55 @@ class WebTest_Member_OnlineAutoRenewMembershipGCTest extends CiviSeleniumTestCas
     static $pageId = NULL;
 
     if (!$pageId) {
-      $this->open($this->sboxPath);
       $this->webtestLogin();
 
       //add payment processor.
-      $hash          = substr(sha1(rand()), 0, 7);
-      $rand          = 2 * rand(2, 50);
+      $hash = substr(sha1(rand()), 0, 7);
+      $rand = 2 * rand(2, 50);
       $processorName = "Webtest Auto Renew Google Checkout" . $hash;
       $this->webtestAddPaymentProcessor($processorName, 'Google_Checkout');
 
       // -- start updating membership types
-      $this->openCiviPage('admin/member/membershipType/add', 'action=update&id=1&reset=1'); 
-      
+      $this->openCiviPage('admin/member/membershipType/add', 'action=update&id=1&reset=1');
+
       $this->waitForElementPresent("xpath=//div[@id='membership_type_form']//table/tbody/tr[6]/td/label[contains(text(), 'Auto-renew Option')]/../../td[2]/label[contains(text(), 'Give option, but not required')]");
       $this->click("xpath=//div[@id='membership_type_form']//table/tbody/tr[6]/td/label[contains(text(), 'Auto-renew Option')]/../../td[2]/label[contains(text(), 'Give option, but not required')]");
-      
+
       $this->type("duration_interval", "1");
       $this->select("duration_unit", "label=year");
 
-      //wait for the auto-complete member_of_contact to populate
-      sleep(3);
-      
+
       $this->click("_qf_MembershipType_upload-bottom");
       $this->waitForPageToLoad($this->getTimeoutMsec());
 
-      $this->openCiviPage('admin/member/membershipType/add', 'action=update&id=2&reset=1'); 
-      
+      $this->openCiviPage('admin/member/membershipType/add', 'action=update&id=2&reset=1');
+
       $this->waitForElementPresent("xpath=//div[@id='membership_type_form']//table/tbody/tr[6]/td/label[contains(text(), 'Auto-renew Option')]/../../td[2]/label[contains(text(), 'Give option, but not required')]");
       $this->click("xpath=//div[@id='membership_type_form']//table/tbody/tr[6]/td/label[contains(text(), 'Auto-renew Option')]/../../td[2]/label[contains(text(), 'Give option, but not required')]");
 
       $this->type("duration_interval", "1");
       $this->select("duration_unit", "label=year");
 
-      //wait for the auto-complete member_of_contact to populate
-      sleep(3);
 
       $this->click("_qf_MembershipType_upload-bottom");
       $this->waitForPageToLoad($this->getTimeoutMsec());
 
       // create contribution page with randomized title and default params
-      $amountSection   = FALSE;
-      $payLater        = TRUE;
-      $onBehalf        = FALSE;
-      $pledges         = FALSE;
-      $recurring       = TRUE;
+      $amountSection = FALSE;
+      $payLater = TRUE;
+      $onBehalf = FALSE;
+      $pledges = FALSE;
+      $recurring = TRUE;
       $membershipTypes = array(array('id' => 1, 'auto_renew' => 1),
         array('id' => 2, 'auto_renew' => 1),
       );
       $memPriceSetId = NULL;
-      $friend        = TRUE;
-      $profilePreId  = NULL;
+      $friend = TRUE;
+      $profilePreId = NULL;
       $profilePostId = NULL;
-      $premiums      = TRUE;
-      $widget        = TRUE;
-      $pcp           = TRUE;
+      $premiums = TRUE;
+      $widget = TRUE;
+      $pcp = TRUE;
 
       $contributionTitle = "Title $hash";
       $pageId = $this->webtestAddContributionPage($hash,
@@ -172,15 +169,12 @@ class WebTest_Member_OnlineAutoRenewMembershipGCTest extends CiviSeleniumTestCas
         FALSE
       );
 
-      // now logout and login with admin credentials
-      $this->openCiviPage('logout', 'reset=1', NULL);
-
       //make sure we do have required permissions.
-      $permissions = array("edit-1-make-online-contributions");
+      $permissions = array("edit-1-make-online-contributions", "edit-1-profile-listings-and-forms");
       $this->changePermissions($permissions);
 
       // now logout and do membership test that way
-      $this->openCiviPage('logout', 'reset=1', NULL);
+      $this->webtestLogout();
     }
 
     return $pageId;